簡體   English   中英

從os.walk創建字典理解

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM