利用照片名中的日期批量修改照片的修改時間和訪問時間(python實現)
阿新 • • 發佈:2021-02-02
技術標籤:python程式設計python
運用場景
前些天家人換了手機,在匯入一些照片時發現相簿APP中的照片排序混亂,好在照片名中有日期資訊,就利用pyhton實現批量修改照片的相關時間
程式碼實現
修改檔案時間,首先想到的就是利用python中的time模組,程式碼如下
import os,sys,time,re
'''
利用utime模組,簡單好用,但只能改 修改時間和訪問時間,不能改建立時間
'''
# 將檔名中的空格替換為‘-’
def space2bar(dirname, basename):
newname = basename.replace(' ', '-' )
os.rename(os.path.join(dirname, basename), os.path.join(dirname, newname))
return newname
# 修改日期
def modify_date(dirname, basename):
"""獲取檔名中的時間格式,用於修改時間 """
# 檔名正則表示式
expression = r"\d{4}-\d{2}-\d{2}-\d{6}"
if re.match(expression, basename) :
temp_str = basename.split('-')
# 獲取temp_str[4]的前4位作為時分
hour_minute = temp_str[3][0:4]
print(dirname+basename+'>>Modify_Date>>' +
temp_str[0]+temp_str[1]+temp_str[2]+hour_minute)
temp_time = time.strptime(
temp_str[0]+temp_str[ 1]+temp_str[2]+hour_minute, '%Y%m%d%H%M')
# 將strptime,返回用秒數來表示時間的浮點數
mtime = time.mktime(temp_time)
# mktime,修改檔案的修改和訪問時間
os.utime(dirname+basename, (mtime, mtime))
print("修改成功")
else:
print("檔名格式不符合")
if __name__ == "__main__":
file_path = r'D:\ProgramData\Python\Modify_date\2015-04-07 142409.jpg'
basename = os.path.basename(file_path)
dirname = os.path.dirname(file_path)+'\\'
if len(basename.split(' ')) > 1:
basename = space2bar(dirname, basename)
modify_date(dirname, basename)
問題
利用time模組中的utime只能修改檔案中的修改時間和訪問時間,不能修改建立時間。下節繼續利用win32file模組修改上述三個時間。