在自動化腳本或檔案管理程式中,我們常需要知道:「這張圖是什麼時候存進來的?」、「這個設定檔上次修改是何時?」。
Python 的 pathlib 模組提供了一個強大的 .stat() 方法,能一次抓出檔案的所有身分證資料。本篇教學將以 img02.png 為例,帶您一步步解析這些神秘數字,並將它們翻譯成我們看得懂的日期格式。
1. 取得檔案狀態 (The Stat Result)
首先,我們需要建立一個 Path 物件,並呼叫 .stat()。這會回傳一個 os.stat_result 物件,裡面包含了所有檔案的 metadata。
from pathlib import Path
# 1. 設定檔案路徑
file_path = Path(r"D:\Temp\img02.png")
# 2. 確保檔案存在 (好習慣)
if file_path.exists():
# 3. 呼叫 .stat() 取得狀態
file_stat = file_path.stat()
print(f"檔案大小: {file_stat.st_size} bytes")
print(f"原始 stat 資料: {file_stat}")
else:
print("找不到檔案!")
file_stat = file_path.stat()
檔案大小: 34803 bytes
原始 stat 資料: os.stat_result(st_mode=33206, st_ino=1407374883652759, st_dev=682610717, st_nlink=1, st_uid=0, st_gid=0, st_size=34803, st_atime=1772680296, st_mtime=1769411104, st_ctime=1770946821)- 三種關鍵時間戳 (Timestamps)
.stat() 回傳的結果中,有三個我們最關心的屬性。但要注意,它們回傳的都是 Unix Timestamp (自 1970/1/1 起算的秒數,例如 1772679162.5),人類無法直接閱讀。

# 取得原始的時間戳記 (浮點數)
m_timestamp = file_stat.st_mtime
c_timestamp = file_stat.st_ctime
a_timestamp = file_stat.st_atime
print(f"修改時間戳記: {m_timestamp}")
# 輸出範例: 1768791989.123456
- 翻譯成人類可讀格式 (Human Readable)
為了看懂這些數字,我們需要 datetime 模組來擔任翻譯官。最常用的方法是 datetime.fromtimestamp()。
完整程式碼範例
from pathlib import Path
from datetime import datetime
# 目標檔案
file_path = Path(r"D:\Temp\img02.png")
if file_path.exists():
stat = file_path.stat()
# 定義一個轉換函式,讓程式碼更乾淨
def convert_time(timestamp):
dt_object = datetime.fromtimestamp(timestamp)
return dt_object.strftime('%Y-%m-%d %H:%M:%S') # 格式化輸出
# 開始轉換
m_time_str = convert_time(stat.st_mtime) # 修改時間
c_time_str = convert_time(stat.st_ctime) # 建立時間
a_time_str = convert_time(stat.st_atime) # 存取時間
print(f"檔案: {file_path.name}")
print("-" * 30)
print(f"📅 修改時間 (mtime): {m_time_str}")
print(f"🐣 建立時間 (ctime): {c_time_str}")
print(f"👁️ 存取時間 (atime): {a_time_str}")
else:
print(f"錯誤:找不到檔案 {file_path}")執行結果範例

- 進階小知識:為什麼建立時間比修改時間晚?
在 Windows 上,你常會看到「建立時間 (ctime)」晚於「修改時間 (mtime)」,這這很正常!
修改時間 (mtime) 跟隨檔案內容。只要圖沒修過,這時間就會維持在它當初畫好的那一刻 (例如 2026/01/19)。
建立時間 (ctime) 跟隨檔案在硬碟上的存在。當你在 2026/03/04 下載或複製這張圖到 Temp 時,它對這顆硬碟來說是個「新檔案」,所以建立時間是今天。
快速懶人包
path_obj.stat() 拿到身分證。
.st_mtime 拿到修改時間的秒數。
datetime.fromtimestamp() 把秒數變成日期物件。
.strftime(‘%Y-%m-%d’) 把日期物件變成漂亮字串。
推薦hahow線上學習python: https://igrape.net/30afN







![Python: 如何使用pandas.to_numeric ( df[‘numbers’], errors=’coerce’) 將非數值型資料轉為NaN? df[‘numbers’].describe() 簡述統計資料 Python: 如何使用pandas.to_numeric ( df[‘numbers’], errors=’coerce’) 將非數值型資料轉為NaN? df[‘numbers’].describe() 簡述統計資料](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2024/05/20240501052102_0.png?quality=90&zoom=2&ssl=1&resize=350%2C233)


近期留言