Python文件不存在异常



我正试图打开一个文件并从中读取,如果文件不在那里,我会捕获异常并向stderr抛出错误。我的代码:

for x in l:
    try:        
        f = open(x,'r')
    except IOError:
        print >> sys.stderr, "No such file" , x

但是stderr没有打印任何内容,如果文件名不存在或者问题出在其他地方,open会创建一个新文件吗?

试试这个:

from __future__ import print_statement
import sys
if os.path.exists(x):
    with open(x, 'r') as f:
        # Do Stuff with file
else:
    print("No such file '{}'".format(x), file=sys.stderr)

这里的目标是尽可能清楚地了解正在发生的事情。我们首先通过调用os.path.exists(x)来检查该文件是否存在。这将返回True或False,使我们可以简单地在if语句中使用它。

从那里,您可以打开文件进行读取,或者根据需要处理退出。使用Python3风格的打印函数可以显式地声明输出的去向,在本例中是stderr。

您有os.path.exists函数:

import os.path
os.path.exists(file_path)

返回bool

它对我有效。为什么你不能使用os.path.exists()

for x in l:
    if not os.path.exists(x):
        print >> sys.stderr , "No such file", x

最新更新