2013-07-30 9 views
13

Czy ktoś może podać różnicę między os.path.getmtime(path) a os.path.getctime(path) w systemach uniksowych. Jak na defnition w docs Pythona:Różnica między pythoniem - getmtime() i getctime() w systemie uniksowym

os.path.getmtime(path)

Return czas ostatniej modyfikacji ścieżki. Wartością zwracaną jest liczba określająca liczbę sekund od epoki (patrz moduł czasu: ). Raise os.error, jeśli plik nie istnieje lub jest niedostępny.

os.path.getctime(path)

Powrót ctime systemu, który w niektórych systemach (takich jak UNIX) jest czas od ostatniej zmiany , a na innych (jak w Windows), to czas stworzenie dla ścieżka. Wartością zwracaną jest liczba określająca liczbę sekund od epoki (patrz moduł czasu) od . Raise os.error if plik nie istnieje lub jest niedostępny.

Czy to w zasadzie oznacza, że ​​są to te same rzeczy używane w systemach Unix/Systems?

#!/usr/bin/python 
import os 
print os.path.getmtime('File') 
print os.path.getctime('FIle') 

Oba wydruki przynoszą mi tę samą wartość.

Po prostu szukam daty ostatniego utworzenia pliku, a nie ostatniej daty modyfikacji. Czy istnieje sposób na osiągnięcie tego samego w systemie UNIX?

Odpowiedz

11

The mtime odnosi się do ostatniej zmiany zawartości pliku. Można to zmienić na systemach Unix na różne sposoby. Często po przywróceniu plików z kopii zapasowej mtime jest zmieniane w celu wskazania ostatniej zmiany zawartości przed utworzeniem kopii zapasowej.

Ctime wskazuje ostatnią zmianę i-węzła. Tego nie można zmienić. W powyższym przykładzie z kopią zapasową ctime nadal będzie odzwierciedlało czas przywracania pliku. Dodatkowo, ctime jest aktualizowane, gdy zmieniają się takie rzeczy jak uprawnienia do plików.

Niestety, zazwyczaj nie ma możliwości znalezienia oryginalnej daty utworzenia pliku. Jest to ograniczenie podstawowego systemu plików. Wierzę, że system plików ext4 dodał datę utworzenia do i-węzła, a HFS Apple również to obsługuje, ale nie jestem pewien, jak byś go pobierał w Pythonie. (Funkcja C stat i odpowiednia komenda stat powinny pokazać te informacje na temat systemów plików, które ją obsługują.)

0

To nie jest technicznie pytanie programistyczne i dlatego nie powinno być w przepełnieniu stosu, ale można znaleźć odpowiedzi, których szukasz here - który jest pierwszym wynikiem Google dla ctime mtime atime. Krótka odpowiedź: ctime zmienia się w przypadku zmiany właściciela lub uprawnień do pliku, a także w przypadku zmiany danych w pliku. mtime zmienia się tylko wtedy, gdy zmieniają się dane w pliku.

3

Od strony człowieka na stat, który os.path.getmtime() i os.path.getctime() zarówno zastosowanie w systemach UNIX:

Pole st_mtime jest zmieniane przez modyfikowanie pliku, na przykład, przez mknod(2), truncate(2), utime(2) i write(2) (więcej niż zero bajtów). Co więcej, st_mtime katalogu zmienia się poprzez tworzenie lub usuwanie plików w tym katalogu. Pole st_mtime nie jest zmieniane w przypadku zmian właściciela, grupy, liczby linków twardych ani trybu.
...

Pole st_ctime jest zmieniane przy zapisywaniu lub poprzez ustawienie węzła informacji (czyli właściciela, grupy, liczby dowiązań, etc.).

Więc nie, to nie to samo.

Powiązane problemy