2013-07-09 102 views
0

我希望我的所有文件被關閉格式:2013-03-31_142436.jpg%Y-%m-%d_%H%M%S確保文件名中的日期時間格式正確

我有一個腳本來重命名方式,但想檢查文件名的格式爲第一。我做的:

for filename in files: 
    # check filename not already in file format 
    filename_without_ext = os.path.splitext(filename)[0]; 

如何檢查filename_without_ext是格式%Y-%m-%d_%H%M%S

回答

2

使用re

import re 
if re.match(r'\d{4}-\d{2}-\d{2}_\d{6}$', filename_without_ext): 
    pass # of the right format 

這將只是檢查看起來像它的是一個有效的機會日期。如果您需要的話,請使用Martijn的答案的有效日期。

+0

很好的答案。你能解釋你的正則表達式嗎? –

+0

'\ d'匹配數字,'{4}','{2}'和'{6}'是量詞;完全匹配那麼多數字。 –

+0

它只是讀取「在字符串開頭檢查有四個數字後跟一個連字符,後跟兩個數字後跟一個連字符,後跟兩個數字,後跟一個下劃線,後跟六個數字結束字符串 –

2

只是嘗試解析它作爲一個時間戳:

from time import strptime 

try: 
    strptime(filename_without_ext, '%Y-%m-%d_%H%M%S') 
except ValueError: 
    # Not a valid timestamp 

strptime()測試有它保證你有一個有效的datetime值,而不僅僅是數字的模式仍然可以代表一個無效的日期時間的優勢(例如,'1234-56-78_987654'不是有效的時間戳)。