1. 程式人生 > >python獲取檔案建立修改時間

python獲取檔案建立修改時間

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

 

參考