Nowe posty

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

Offline jaro~123

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 19
    • Zobacz profil
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: 2503
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • Linuxpedia.PL
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