2017-07-26 15 views
0

私はたくさんのファイルといくつかのフォルダを持っています。 zipをリストに追加しようとしているので、コードの他の部分でそれらのファイルを抽出することができます。ジップを見つけることは決してありません。os.listdir()はすべてのファイルを出力しません

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

パスは問題なく、何も印刷されません。それは毎回同じファイルをピックアップしますが、他のファイルはピックアップしません。これは、ディレクトリ内のファイルの約5分の1をピックアップします。

完全に紛失しました。私は、コードに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'を使用してください。 –

関連する問題