Pythonic的方式来检查文件是否存在?
这个问题在这里已经有了答案:
检查路径是否是现有文件:
os.path.isfile(path)
如果路径是现有的常规文件,则返回True
。 这遵循符号链接,所以islink()
和isfile()
对于相同的路径都可以为true。
取而代之的os.path.isfile
,建议由别人,我建议使用os.path.exists
,检查与该名什么,不只是它是否是一个普通的文件。
从而:
if not os.path.exists(filename):
file(filename, 'w').close()
或者:
file(filename, 'w+').close()
后者将创建该文件,如果它存在,但不是。 但是,如果文件存在,它将会失败,但是您没有写入权限。 这就是为什么我更喜欢第一个解决方案。
在我看来,迄今为止所有其他答案(迄今为止)未能解决与他们提出的解决方案相关的竞争条件。
任何你首先检查文件存在的代码,然后在你的程序的几行后面创建它,会冒着在你没有看到并导致你的问题时创建文件的风险(或者你导致所有者“其他文件”问题)。
如果你想避免这种事情,我会建议像下面这样(未经测试):
import os
def open_if_not_exists(filename):
try:
fd = os.open(filename, os.O_CREAT | os.O_EXCL | os.O_WRONLY)
except OSError, e:
if e.errno == 17:
print e
return None
else:
raise
else:
return os.fdopen(fd, 'w')
如果文件不存在,应该打开文件进行写入,并返回文件对象。 如果它确实存在,它将打印“Ooops”并返回None(未经测试,仅基于阅读python文档,因此可能不是100%正确的)。
链接地址: http://www.djcxy.com/p/7297.html上一篇: Pythonic way to check if a file exists?
下一篇: SERVER['REQUEST