2017-07-26 177 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'来很好地处理最后一个点。 –