[英]How can I set the last modified time of a file from python?
我有一個 python 腳本,它使用ftplib通過 FTP 下載文件。
我當前的下載代碼看起來就像 ftp 庫文檔中的示例:
ftp.retrbinary('RETR README', open('README', 'wb').write)
現在我有一個要求,即通過 FTP 下載的文件需要與 FTP 服務器本身上的文件具有相同的最后修改時間。 假設我可以從ftp.retrlines('list')
中解析出時間,我該如何設置下載文件的修改時間?
如果重要的話,我使用的是基於 unix 的操作系統。
如果你想直接從python這樣做,你正在尋找os.utime
。 文檔可以為您提供更多信息。
要編輯文件上次修改字段,請使用:
os.utime(<file path>, (<access date epoch>, <modification date epoch>))
例子:
os.utime(r'C:\my\file\path.pdf', (1602179630, 1602179630))
- 紀元是自 1970 年 1 月 1 日以來經過的秒數。查看更多
如果您正在尋找datetime
時間版本:
import datetime
import os
def set_file_last_modified(file_path, dt):
dt_epoch = dt.timestamp()
os.utime(file_path, (dt_epoch, dt_epoch))
# ...
now = datetime.datetime.now()
set_file_last_modified(r'C:\my\file\path.pdf', now)
- 對於 Python 版本 < 3.3 使用
dt_epoch = time.mktime(dt.timetuple())
有兩種方法可以做到這一點。 一個是os.utime
示例,如果您在沒有參考統計信息的文件上設置時間戳,則需要該示例。
但是,如果您使用shutil.copy()
復制文件,則您有一個參考文件。 然后,如果您想要復制權限位、上次訪問時間、上次修改時間和標志,則可以在shutil.copystat()
shutil.copy()
。
然后是shutil.copy2
旨在同時執行這兩項操作......
#效果很好
import datetime
import os
from datetime import datetime
def modified_st_file(file_path, dt):
dt_epoch = dt.timestamp()
os.utime(file_path, (dt_epoch, dt_epoch))
changets = datetime.fromisoformat('2011-11-04T00:05:23')
#if you want to set current time the use
#changets = datetime.now()
modified_st_file(r"C:/User/falcon.py", changets)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.