2012-07-05 7 views
33

Mam skrypt Pythona, który pobiera plik przez FTP przy użyciu ftplib.Jak ustawić czas ostatniej modyfikacji pliku z Pythona?

Mój obecny pobierania kodu wygląda tak jak na przykład w ftp lib docs:

ftp.retrbinary('RETR README', open('README', 'wb').write) 

Teraz mam wymogu, że plik pobrany przez FTP musi mieć taki sam czas ostatniej modyfikacji w postaci pliku na Sam serwer FTP. Zakładając, że mogę przeanalizować czas od ftp.retrlines('list'), w jaki sposób mogę ustawić zmodyfikowany czas na pobranym pliku?

Jestem na systemie operacyjnym opartym na systemie Unix, jeśli to ma znaczenie.

Odpowiedz

43

Jeśli chcesz zrobić to bezpośrednio z Pythona, szukasz os.utime. docs może dać ci więcej informacji.

+0

to co szukałem, dzięki – jdeuce

4

Dostępne są 2 sposoby. Jednym z nich jest przykład os.utime, powyżej którego wymagane jest , jeśli ustawiasz znacznik czasu na pliku, który nie ma statystyk odniesienia . Jednakże, jeśli kopiujesz pliki z "shutil.copy()", masz plik referencyjny . Następnie, jeśli chcesz uzyskać bity uprawnień, czas ostatniego dostępu, i czas ostatniej modyfikacji, i flagi również skopiowane, możesz użyć "shutil.copystat()" zaraz po "shutil.copy()".

Nie mam pojęcia, dlaczego nie dodają flag do "shutil.copy()", który robi to za pomocą jednego polecenia. Wygląda na to, że zostało zaimplementowane przez różnych autorów. Jeden zaimplementował kopię i zaimplementował na kontrolerze, aby uzupełnić brakującą funkcję w poprzednim.

A potem jest „shutil.copy2”, który ma na celu zrobić oba naraz ...

19

Zastosowanie os.utime:

import os 

os.utime(path_to_file, (access_time, modification_time)) 
+0

bardziej rozbudowany przykład: https://www.tutorialspoint.com/python/os_utime.htm – kashiraja

Powiązane problemy