我試圖在一系列目錄中創建一個csv的路徑到wav文件。每一行都應該對應一個目錄。一行中的每個單元格都應該包含單個文件的路徑。下面的腳本「幾乎」工作。它創建一個CSV文件作爲單元格。但是,os.path.realpath和os.path.abspath不包含文件的直接父目錄。所以,而不是「/root/directory/file.wav」。我得到「/root/file.wav」。在python中獲取文件的完整路徑
import fnmatch
import os
import csv
with open('filelist.csv', 'wb') as csvfile:
lister = csv.writer(csvfile, delimiter=',')
for root, dirnames, filenames in os.walk(os.getcwd()):
matches = []
for filename in fnmatch.filter(filenames, '*.wav'):
matches.append(os.path.realpath(filename))
if len(matches) > 0:
print matches
lister.writerow(matches)
作爲一個方面說明,如果你的代碼不是一個沒有縮進的完美樹,那麼你的代碼難以閱讀就會變得更糟。實際上,我認爲您的代碼中實際上可能存在縮進錯誤,但很難確定。你真的想寫第一場比賽,然後是前兩場比賽,然後是前三場比賽,然後是前四場比賽?因爲這就是你的代碼所做的。如果它在'append'後面,'if'語句就毫無意義,因爲它永遠是真的。 – abarnert 2014-09-11 04:09:01
另外,你不需要'os.walk(os.getcwd())',只是'os.walk('。')'很好。而且你不需要'如果len(匹配)> 0:',只是'匹配:'。 (大部分是在PEP 8中。) – abarnert 2014-09-11 04:10:08