我有这段代码:
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
它不会列出具有多个空格的文件,例如:
100002044_A h_HD_XXX_20120229_141236.png
A
和h
之间有3个空格。
我知道会列出单个空格但不会列出多个空格
即使ls
也不会使用ls/*.png
列出文件任何帮助
答案 0 :(得分: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?)"
答案 1 :(得分: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())
对我来说,它始终是真实的。
答案 2 :(得分: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
>>>
答案 3 :(得分:0)
你的ls命令应该是:ls *.png
。如果你真的使用斜线,那就不行了。
我会检查您的ftpUploaddir
是否正确:您的脚本在运行时是否找到任何文件?使用正确的路径,您的脚本应该按照书面形式工作。
顺便说一句,找到具有特定扩展名的文件会更容易:
import glob, os
for f in glob.glob(os.path.join(ftpUploaddir, "*.png")):
print f