[英]Create dictionary comprehension from os.walk
我正在嘗試創建一個所有mp3文件的字典,其中鍵是mp3文件名,值是該文件的文件路徑。
我做:
for root, dirs, files in os.walk(rootDir, topdown='true'):
source_files_now = {filename:root for filename in files if filename[-4] == '.mp3'}
print(source_files_now);
但字典,source_files_now最終為空。
目錄中有明確的mp3文件。
有任何想法嗎?
filename[-4] == '.mp3'
檢查倒數第三個字符是否為'.mp3'
。 這沒有多大意義。
只需使用.endswith()
:
filename.endswith('.mp3')
如果要修復代碼,請對字符串進行切片,以使切片包含其他字符:
filename[-4:] == '.mp3'
在比較之前我還會將文件名轉換為小寫。 您最終可能會跳過全部大寫的文件名。
除了已經提到的[-4]問題之外,你還要在for循環中覆蓋source_files_now。 將它初始化在循環上方,只需添加到它而不是使用dict理解。
source_files_now = {}
for root, dirs, files in os.walk(rootDir):
for filename in files:
if filename.endswith('.mp3'):
source_files_now[filename] = os.path.join(root, filename)
它不會破壞你的腳本,但它應該是topdown = True,而不是topdown ='true'。 我刪除了它,因為True是默認值。
您將字符串索引略有錯誤:
>>> s = 'buddyholly.mp3'
>>> s[-4]
'.'
>>> s[-4:]
'.mp3'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.