Nowe posty

xx Jak poprawić polecenie wyszukujące największe pliki? (3)
2021-06-13, 20:00:52
xx CUPS - Wyłączenie hostname w nazwie udostępnionej drukarki (6)
2021-06-12, 02:45:06
xx Tłumaczenie prostych programów napisanych w csh na sh (0)
2021-06-11, 16:07:52
xx Do regulaminu (0)
2021-06-07, 02:16:34
xx kompletny restore systemu (5)
2021-06-03, 11:47:08
xx Połączenie wifi, nie skanuje w poszukiwaniu sieci. (1)
2021-06-02, 22:04:54
xx problemy z instalacją (1)
2021-06-02, 14:23:26
xx Pomoc w napisaniu skryptu (11)
2021-05-31, 13:34:19
xx Instalacja php5.4 na Debian10 (2)
2021-05-31, 09:13:54
xx Wielkie firmy wymuszają dane (7)
2021-05-30, 20:25:21

Autor Wątek: porównanie daty utworzenia pliku z datą systemową  (Przeczytany 3236 razy)

jaro~123

  • Gość
porównanie daty utworzenia pliku z datą systemową
« dnia: 2016-07-08, 10:29:08 »
Witam,
proszę o pomoc w napisaniu w python'ie funkcji która określiła by w dniach różnicę między datą utworzenia pliku a datą bieżącą.
a przy okazji, jeżeli skrypt w pytonie i plik jest w tej samej lokalizacji to czy muszę podawać całą ścieżkę dostępu do pliku? kiedyś skrypt mi działał po podaniu samej nazwy pliku, jak to zrobić? gogle coś nie chce mi podać rozwiązania :(

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2717
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • keybase.io/pkraszewski
Odp: porównanie daty utworzenia pliku z datą systemową
« Odpowiedź #1 dnia: 2016-07-08, 14:04:23 »
"plik jest w tej samej lokalizacji co skrypt" =/= "plik jest w tej samej lokalizacji co punkt wywołania skryptu".

Wyobraź dobie takie drzewo:

Kat1
 \
  |-Skrypt.py
  |-Plik1.txt
  |-Kat2
      \
       |-Plik2.txt
Jeżeli jesteś w katalogu Kat1 to:
* Skrypt odpalasz albo przez ./Skrypt.py albo przez /pełna/ścieżka/do/Kat1/Skrypt.py.
* Dla skryptu Plik1.txt widziany jest jako Plik1.txt  albo przez pełną ścieżkę /pełna/ścieżka/do/Kat1/Plik1.txt.
* Dla skryptu Plik2.txt widziany jest jako Kat2/Plik2.txt  albo przez pełną ścieżkę /pełna/ścieżka/do/Kat1/Kat2/Plik2.txt.

Jeżeli jesteś w katalogu Kat2 to:
* Skrypt odpalasz albo przez ../Skrypt.py albo przez /pełna/ścieżka/do/Kat1/Skrypt.py.
* Dla skryptu Plik1.txt widziany jest jako ../Plik1.txt  albo przez pełną ścieżkę /pełna/ścieżka/do/Kat1/Plik1.txt.
* Dla skryptu Plik2.txt widziany jest jako Plik2.txt  albo przez pełną ścieżkę /pełna/ścieżka/do/Kat1/Kat2/Plik2.txt.

Czyli plik jest widziany względem katalogu z którego uruchamiasz skrypt (cwd - current working directory) a nie względem katalogu, w którym jest skrypt. Oczywiście przy założeniu, że skrypt nie zmienia CWD w trakcie pracy.

A co do dat:
 * Datę modyfikacji pliku wyciągasz przez datetime.fromtimestamp(os.path.getmtime(PLIK))
 * Bieżącą datę przez datetime.now()
 * Różnicę masz przez zwykłe odejmowanie, wynik jest typu timedelta, typ ten ma metodę days zwracającą to, czego potrzebujesz.
« Ostatnia zmiana: 2016-07-08, 14:08:49 wysłana przez Paweł Kraszewski »
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy