2017-07-26 306 views
0

我有一堆文件和一些文件夾。我試圖將zip添加到列表中,以便我可以在代碼的其他部分提取這些文件。它從來沒有發現拉鍊。os.listdir()不打印出所有文件

for file in os.listdir(path): 
    print(file) 
    if file.split(".")[1] == 'zip': 
    reg_zips.append(file) 

路徑很好或它不會打印出任何東西。它每次拾取相同的文件,但不會拾取任何其他文件。它佔據目錄中大約1/5的文件。

完全喪失。通過在代碼中加入time.sleep(3),我確定了文件可用性的一些奇怪的競爭條件並不是問題。沒有解決它。

+0

文件名中是否有多個'.',也許? 'file.endswith('.zip')'工作嗎? –

+0

謝謝。把它作爲答案,我會標記它。我會把它弄得筋疲力盡。 –

回答

3

這可能是您的文件在其中有多個句點。嘗試使用str.endswith

reg_zips = [] 
for file in os.listdir(path): 
    if file.endswith('zip'): 
     reg_zips.append(file) 

另一個好主意(!感謝讓 - 弗朗索瓦·法布爾)是使用os.path.splitext,它處理的擴展相當不錯:

if os.path.splitext(file)[-1] == '.zip': 
    ... 

上午甚至更好的解決辦法,我建議用glob.glob功能:

import glob 
reg_zips = glob.glob('*.zip') 
+1

或使用'os.path.splitext'來很好地處理最後一個點。 –