以跨平台的方式擷取某種修改日期很容易,隻需調用即可。os.path.getmtime(path)然後,您将得到Unix時間戳,該檔案将在path最後一次修改。
擷取檔案創造另一方面,日期是微妙和平台依賴的,甚至在三大作業系統之間也是不同的:在……上面
麥克,以及其他一些基于unix的作業系統,您可以使用調用的結果的
os.stat().
在……上面linux,至少在沒有為Python編寫C擴充的情況下,這是不可能的。雖然一些與linux一起使用的檔案系統商店建立日期(例如,ext4藏在st_crtime),Linux核心提供無法通路它們的方法,特别是,它傳回的結構stat()調用C,在最新的核心版本中,不包含任何建立日期字段..您還可以看到辨別符st_crtime目前在Python源..至少如果你在ext4,資料是附加到檔案系統中的inode,但沒有通路它的友善方法。
Linux上第二好的事情是通路檔案的mtime,通過os.path.getmtime()或者.st_mtime屬性os.stat()結果。這将給您最後一次修改該檔案的内容,這可能足以滿足某些用例的需要。
把所有這些放在一起,跨平台代碼應該是這樣的.import osimport platformdef creation_date(path_to_file):
"""
Try to get the date that a file was created, falling back to when it was
last modified if that isn't possible.
See http://stackoverflow.com/a/39501288/1709587 for explanation.
"""
if platform.system() == 'Windows':
return os.path.getctime(path_to_file)
else:
stat = os.stat(path_to_file)
try:
return stat.st_birthtime except AttributeError:
# We're probably on Linux. No easy way to get creation dates here,
# so we'll settle for when its content was last modified.
return stat.st_mtime