2012-02-29 6 views
0

私はこのコードを持っている:リストファイル

for f in os.listdir(ftpUploaddir): 
    if os.path.isfile(os.path.join(ftpUploaddir,f)): 
     #Filter files having .png as extension 
     if f[-4:] == ".png": 
      print "from directory", f 

それは1つのスペースよりNOREを持つファイル、例えば表示されていない:3つのスペースがあります

100002044_A h_HD_XXX_20120229_141236.png 

Ahの間です。

私は複数のスペース

でもlsls/*.pngを使用してファイルに任意のヘルプを表示されません単一のスペースが表示されます知っているがないが、私はこの問題を再現することはできません

+1

私は 'タッチ「テストファイル」を行う場合は、 ls test * 'ファイルが正常に表示されるので、これらのファイルに問題はありません。 – Roadmaster

+0

私のためにうまく動作します。あなたのファイルシステムは何らかの形で壊れているようです。あるいは、 '.png'の後に印字不可能な文字がもう1つありますか? –

+0

あなたはどのオペレーティングシステムを使用していますか?そしてあなたが実際に見つけることが期待されるファイルが存在することを確かめていますか?つまり、ファイルを表示している "ls -l"(またはあなたが使用しているOSに相当するもの)を実行できますか? –

答えて

0

を高く評価しました。このPythonスクリプトを実行してみてください:

# create a file with multiple spaces in the name 
outf = open("100002044_A h_HD_XXX_20120229_141236.png", "w") 
outf.write("hello, world") 
outf.close() 

# see if os.listdir can find it 
import os 
print "100002044_A h_HD_XXX_20120229_141236.png" in os.listdir(os.getcwd()) 

私にとっては、常にTrueと表示されます。

1

ファイルが実際に存在するかどうかを確認してみてください。おそらく(Svenが示唆しているように) ".png"の後ろにスペースやその他の文字がありますか?

for f in os.listdir(ftpUploaddir): 
    if "h_HD_XXX_20120229_141236" in f 
     print "Full name is %r" % f 
     if not os.path.isfile(os.path.join(ftpUploaddir,f)): 
      print " (but it's not a file?)" 
+0

ありがとうございました!申し訳ありませんが、私は言うだろう非常にばかげた間違いです。あなたは正しいです@ ** Sven **実際に生成されたファイルは名前とpngの間にスペースがあるため、リストには載っていません。 –

0

fnmatchモジュールを使用しようとしましたが、問題を再現できません。

>>> import os 
>>> import fnmatch 
>>> os.listdir(r'C:\Users\RanRag\python\test') 
['gameicon.png', 'grass i test.png', 'hello.txt'] 

>>> for file in os.listdir(r'C:\Users\RanRag\python\test'): 
...   if fnmatch.fnmatch(file , '*.png'): 
...        print file 
... 
gameicon.png 
grass i test.png 
>>> 
0

lsコマンドは、ls *.pngである必要があります。あなたが実際にスラッシュを使用した場合、それはうまくいきません。

ftpUploaddirが正しいかどうかを確認します:実行時にのファイルが見つかりましたか??正しいパスで、スクリプトは書かれたとおりに動作するはずです。

なお、このような特定の拡張子を持つファイルを検索する方が簡単です:

import glob, os 
for f in glob.glob(os.path.join(ftpUploaddir, "*.png")): 
    print f 
関連する問題