2012-07-05 26 views
33

Tôi có một tập lệnh python tải xuống tệp qua FTP bằng cách sử dụng ftplib.Làm thế nào tôi có thể đặt thời gian sửa đổi cuối cùng của một tệp từ python?

tải mã hiện tại của tôi trông giống như ví dụ trong tài liệu lib ftp:

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

Bây giờ tôi có một yêu cầu mà các tập tin đã tải qua FTP cần có đồng thời sửa đổi lần cuối như các tập tin trên Bản thân máy chủ FTP. Giả sử tôi có thể phân tích thời gian từ ftp.retrlines('list'), làm cách nào tôi có thể đặt thời gian sửa đổi trên tệp đã tải xuống?

Tôi đang sử dụng hệ điều hành Unix nếu có vấn đề.

Trả lời

43

Nếu bạn muốn thực hiện việc này trực tiếp từ python, bạn đang tìm kiếm os.utime. docs có thể cung cấp thêm thông tin cho bạn.

+0

đó là những gì tôi đang tìm kiếm, nhờ – jdeuce

4

Có 2 cách để thực hiện việc này. Một là ví dụ os.utime ở trên mà là bắt buộc nếu bạn đang đặt dấu thời gian trên tệp không có số liệu thống kê tham chiếu . Tuy nhiên, nếu bạn đang sao chép các tệp bằng "shutil.copy()", bạn có tệp tham chiếu . Sau đó, nếu bạn muốn các bit quyền, thời gian truy cập cuối cùng, thời gian sửa đổi cuối cùng và cờ cũng được sao chép, bạn có thể sử dụng "shutil.copystat()" ngay sau "shutil.copy()".

Tôi không biết tại sao họ không thêm cờ vào "shutil.copy()" là thực hiện điều này trong một lệnh duy nhất. Có vẻ như nó đã được thực hiện bởi các tác giả khác nhau. Một thực hiện bản sao và một thực hiện copystat để điền vào các tính năng còn thiếu trong các cựu.

Và sau đó là "shutil.copy2" được dự định để làm cả hai cùng một lúc ...

19

Sử dụng os.utime:

import os 

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

dụ More công phu: https://www.tutorialspoint.com/python/os_utime.htm – kashiraja

Các vấn đề liên quan