如果文件不存在则python失败

时间:2011-09-14 20:08:25

标签: python

所以我有一个循环检查文件夹是否包含* .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文件打印不会发生

有什么建议吗? 谢谢

4 个答案:

答案 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"