我正试图打开一个文件并从中读取,如果文件不在那里,我会捕获异常并向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