所以我有一个循环检查文件夹是否包含* .zip文件
for file in glob.glob( os.path.join(rootdir, '*.zip')):
print "zip", file
#Check if file does not exist
if not os.path.exists(file):
print "No files"
#return
else:
some code
现在,如果文件存在其他工作,但如果没有zip文件打印不会发生
有什么建议吗? 谢谢
答案 0 :(得分:2)
如果该文件夹中没有zip文件,则for循环永远不会执行。
就像
一样for i in []:
print "Hello"
不会打印任何内容,因为没有要迭代的元素。
如果您需要该错误消息,可以执行以下操作:
filelist = glob.glob(os.path.join(rootdir, '*.zip'))
if filelist:
for f in filelist:
# some code
else:
print "No files"
答案 1 :(得分:2)
如果没有zip文件,那么你循环一个空列表,尝试这样的事情:
files = glob.glob( os.path.join(rootdir, '*.zip'))
if len(files) != 0:
for file in files:
print "zip", file
#Check if file does not exist
if not os.path.exists(file):
print file, "does not exist"
#return
else:
some code
else:
print "No files"
答案 2 :(得分:0)
glob()
文件返回它找到的任何匹配项。如果找不到您提供的模式的匹配项,则返回空列表:[]
。这与shell glob模式的不同之处不同!在大多数shell中,foo*
当没有文件以foo*
开头时,只会向命令提供单词foo*
;但这不是glob()
所做的。
答案 3 :(得分:0)
如果不存在任何文件,则您的循环根本不会运行。测试os.path.exists(文件)将始终为true(除非其他进程在运行循环时删除文件),否则,glob不会列出为文件。
files = glob.glob( os.path.join(rootdir, '*.zip'))
for file in files:
print "zip", file
if len(files) == 0:
print "no files"