python獲取檔案建立修改時間
阿新 • • 發佈:2018-12-19
1 時間表示概念
常見的時間表示形式為:
- 時間戳
- 格式化的時間字串
timestamp(時間戳) 也稱為Unix時間 或 POSIX時間;它是一種時間表示方式,表示從格林尼治時間1970年1月1日0時0分0秒開始到現在所經過的毫秒數,其值為float型別。 但是有些程式語言的相關方法返回的是秒數(Python就是這樣),這個需要看方法的文件說明。需要說明的是時間戳是個差值,其值與時區無關。
2 time模組
提供各種與時間相關的函式。可以返回時間戳或struct_time形式的時間或字串形式的時間。
time.asctime([t]) | 將一個tuple或struct_time形式的時間(可以通過gmtime()和localtime()方法獲取)轉換為一個24個字元的時間字串,格式為: "Fri Aug 19 11:14:16 2016"。如果引數t未提供,則取localtime()的返回值作為引數。 |
time.ctime([secs]) | 功能同上,將一個秒數時間戳表示的時間轉換為一個表示當前本地時間的字串。如果引數secs沒有提供或值為None,則取time()方法的返回值作為預設值。ctime(secs)等價於asctime(localtime(secs)) |
time.time() | 返回時間戳(自1970-1-1 0:00:00 至今所經歷的秒數) |
time.localtime([secs]) | 返回以指定時間戳對應的本地時間的 struct_time物件(可以通過下標,也可以通過 .屬性名 的方式來引用內部屬性)格式 |
time.strftime(time_format_str[], struct_time_instance) | 將struct_time物件例項轉換成字串,如果struct_time_instance不指定則取當前本地時間對應的time_struct物件 |
time.strptime(time_str, time_format_str) | 將時間字串轉換為struct_time時間物件,如:time.strptime('2018-11-03 16:53', '%Y-%m-%d %H:%M') |
>>> time.time() 1541234551.9965222 >>> time.localtime() time.struct_time(tm_year=2018, tm_mon=11, tm_mday=3, tm_hour=16, tm_min=45, tm_sec=37, tm_wday=5, tm_yday=307, tm_isdst=0) >>> time.ctime() 'Sat Nov 3 16:49:08 2018' >>> time.asctime() 'Sat Nov 3 16:49:18 2018' >>> print(time.strftime('%Y-%m-%d %H:%M')) 2018-11-03 16:53 >>> time.strptime('2018-11-03 16:53', '%Y-%m-%d %H:%M') time.struct_time(tm_year=2018, tm_mon=11, tm_mday=3, tm_hour=16, tm_min=53, tm_sec=0, tm_wday=5, tm_yday=307, tm_isdst=-1)
注意到time.ctime()和time.asctime()輸出的字串形式的時間與我們的習慣格式不同,一般使用time.strftime()轉換。
此外還有datetime模組可以使用。
3 獲取時間並格式化
os.stat() 方法用於在給定的路徑上執行一個系統 stat 的呼叫。返回值中有:
- st_mtime: 最後一次修改的時間。
- st_ctime: 由作業系統報告的"ctime"。在某些系統上(如Unix)是最新的元資料更改的時間,在其它系統上(如Windows)是建立時間(詳細資訊參見平臺的文件)。
這兩個返回值均為時間戳形式。
>>> print(os.stat("D:/mm.cfg"))
os.stat_result(st_mode=33206, st_ino=10977524091732464, st_dev=3469357810, st_nlink=1, st_uid=0, st_gid=0, st_size=34, st_atime=1505129122, st_mtime=1512922391, st_ctime=1505129122)
使用time模組,可以輸出格式化的檔案建立修改時間。
import os,time
modifiedTime = time.localtime(os.stat("D:/mm.cfg").st_mtime)
createdTime = time.localtime(os.stat("D:/mm.cfg").st_ctime)
mTime = time.strftime('%Y-%m-%d %H:%M:%S', modifiedTime)
cTime = time.strftime('%Y-%m-%d %H:%M:%S', createdTime)
print("modifiedTime " + mTime)
print("createdTime " + cTime)
返回結果與系統中的資訊一致。
modifiedTime 2017-12-11 00:13:11
createdTime 2017-09-11 19:25:22