os.listdir() 不打印出所有文件

Dyl*_*ore 1 python directory file listdir

我有一堆文件和几个文件夹。我正在尝试将 zip 附加到列表中,以便我可以在代码的其他部分提取这些文件。它永远找不到拉链。

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

路径很好,否则它不会打印出任何东西。它每次都会选取相同的文件,但不会选取任何其他文件。它获取目录中大约 1/5 的文件。

完全亏本。我已经通过在代码中放入 time.sleep(3) 来确保文件可用性的一些奇怪的竞争条件不是问题。没解决。

cs9*_*s95 5

您的文件中可能有多个句点。尝试使用str.endswith

reg_zips = []
for file in os.listdir(path):
     if file.endswith('zip'):
         reg_zips.append(file)
Run Code Online (Sandbox Code Playgroud)

另一个好主意(谢谢,Jean-François Fabre!)是使用os.path.splitext,它可以很好地处理扩展:

if os.path.splitext(file)[-1] == '.zip':
    ... 
Run Code Online (Sandbox Code Playgroud)

是更好的解决方案,我推荐使用以下glob.glob功能:

import glob
reg_zips = glob.glob('*.zip')
Run Code Online (Sandbox Code Playgroud)