[英]Unable to rename the last file of the directory using loop
我正在重命名 function ,它根據媒體創建日期對視頻文件進行索引。 由於媒體創建日期不是文件元數據,我正在使用win32com.propsys模塊,它完全按預期工作,直到FILES
列表的最后一個元素,但進入剩余文件的循環。 我無法解決這個問題。 非常感謝您提出積極的建議。
import os
import pytz
import datetime
from win32com.propsys import propsys, pscon
os.chdir(r'H:\Study material\Python\practice')
current_path = r'H:\Study material\Python\practice'
files = os.listdir(current_path)
fi = []
li = []
for f in files:
properties = propsys.SHGetPropertyStoreFromParsingName(r'H:\Study material\Python\practice'+'\\'+f )
d = properties.GetValue(pscon.PKEY_Media_DateEncoded).GetValue()
fi.append([str(d),f])
fi.sort()
l = [s[1] for s in fi]
for f in files:
i = l.index(f) + 1
new_name = str(i)+'-'+ f
li.append(new_name)
i = 0
for f in files:
os.rename(f,li[i])
i+=1
我猜排序文件列表中的最后一項是目錄(可能是'__pycache__'?)。 嘗試檢查它是否真的是一個文件:
...
for f in files:
if not os.path.isfile(f):
print(f'not a file: {f}')
continue
properties = propsys.SHGetPropertyStoreFromParsingName(
os.path.join(r'H:\Study material\Python\practice', f) )
d = properties.GetValue(pscon.PKEY_Media_DateEncoded).GetValue()
fi.append([str(d), f])
...
或者嘗試打印每個文件名和新名稱,看看是否一切正確:
...
for i, f in enumerate(files):
print(f, 'rename to', li[i])
os.rename(f, li[i])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.