2016-12-21 36 views
0

我試圖創建一個查看特定目錄的腳本,然後列出除原始位置內的所有文件夾之外的所選類型的所有文件。列出特定文件類型和目錄的文件

我已經管理列出所選類型的所有文件的第一部分,但遇到列出文件夾的問題。

我的代碼是:

import datetime, os 

now = datetime.datetime.now() 

myFolder = 'F:\\' 
textFile = 'myTextFile.txt' 

outToFile = open(textFile, mode='w', encoding='utf-8') 


filmDir = os.listdir(path=myFolder) 

for file in filmDir: 
    if file.endswith(('avi','mp4','mkv','pdf')): 
     outToFile.write(os.path.splitext(file)[0] + '\n') 
    if os.path.isdir(file): 
     outToFile.write(os.path.splitext(file)[0] + '\n') 

outToFile.close() 

它成功地列出了所有AVI/MP4/MKV/PDF文件,但不是永遠進入,即使有在我的F多個文件夾的if os.path.isdir(file)::目錄。

任何幫助將不勝感激。即使它提出了一個更有效,更高效的方法來完成這項工作。

發現的解決方案感謝兒子的海灘

if os.path.isdir(file): 

改爲

if os.path.isdir(os.path.join(myFolder, file)): 
+0

你檢查(例如用'print')什麼file'的'的價值是什麼?完全合格嗎?相對路徑?只是一個文件名? –

回答

0

os.listdir返回的文件,而不是完全限定路徑文件的名稱。

您應該在os.path.isdir()中使用完全限定的路徑名​​(除非您已經告訴Python在哪裏查看)。

例如,而不是使用if os.path.isdir(file):你可以使用:

if os.path.isdir(os.path.join(myFolder, file)): 
+0

就是這樣。謝謝。編輯爲'if os.path.isdir(filmFolder + file):'並且它工作正常 – Archimedes94

+0

我剛剛編輯過那個試圖放置更通用的變量名稱,並且在編輯謝謝時一定錯過了那個。 – Archimedes94

+0

不客氣。請注意,如果'myFolder'已在末尾具有正確的路徑分隔符,'myFolder + file'可能正常工作。一般來說,'os.path.join(myFolder,file)'更安全,因爲'myFolder'以正確的路徑分隔符結束或不行(並且可以在任何環境中工作,不管當前操作系統的路徑分隔符是什麼是)。 –

相關問題