python检查文件_如何使用Python检查文件是否存在?

如何在不使用try语句的情况下检查文件是否存在?

只是为了增加混淆,似乎以前建议的try:open()方法在Python中不起作用,因为文件访问不是排他性的,即使在写入文件时也是如此.

我想有一个很好的理由来检查一个文件的存在,就像你要求的一样,是否仅仅存在自己发送一个消息。而且没有阅读的意图,呃?

@Tilman打开(),因为它没有规模,就需要关闭该文件,并具有改变文件的最后访问时间的副作用是不恰当的..

如果你正在检查的原因是你可以做这样的事情if file_exists: open_it(),那么使用try周围的尝试来打开它是比较安全的。检查然后打开文件被删除或移动的风险,或者当您检查和尝试打开文件时。

如果你不打算立即打开文件,你可以使用 os.path.isfile

True如果路径是现有的常规文件,则返回。这遵循符号链接,所以islink()和isfile()对于相同的路径可以是true。

import os.path

os.path.isfile(fname)

如果你需要确定它是一个文件。

从Python 3.4开始,pathlib模块提供了一个面向对象的方法(pathlib2在Python 2.7中被反向移植):

from pathlib import Path

my_file = Path("/path/to/file")

if my_file.is_file():

# file exists

要检查一个目录,请执行:

if my_file.is_dir():

# directory exists

要检查某个Path对象是否存在,而不管它是文件还是目录,请使用exists():

if my_file.exists():

# path exists

你也可以resolve()在一个try块中使用:

try:

my_abs_path = my_file.resolve():

except FileNotFoundError:

# doesn't exist

else:

# exists

pathlib也回到2.7

官方的backport是pathlib2,pathlib模块不再维护。

用一行检查缩短它os.path.isfile(file_path) and Path(str(file_path)).is_file()显然你需要添加进口os和pathlib

我完全同意,没有理由只是检查一个文件的存在,除非它的存在本身就是一个信号。在这种情况下,最好有一个CSV文件,在其中写入一个指示信号的值 – 然后可以通过单个文件传送多个信号。

有时可能需要尝试/赶上,但我不认为这是一般的规则。当发生这样的严重异常时,您希望程序崩溃。所有其他的资源都应该由上下文管理器来处理,所以他们应该能够在未捕获的异常情况下处理自己。

import os.path

os.path.exists(file_path)

这将返回True文件和目录,但您可以改为使用os.path.isfile来测试它是否是一个特定的文件。它遵循符号链接。

不同isfile(),exists()将返回True目录。

所以取决于如果你只想要纯文件或目录,你会使用isfile()或exists()。这是一个简单的REPL输出。

>>> print os.path.isfile("/etc/password.txt")

True

>>> print os.path.isfile("/etc")

False

>>> print os.path.isfile("/does/not/exist")

False

>>> print os.path.exists("/etc/password.txt")

True

>>> print os.path.exists("/etc")

True

>>> print os.path.exists("/does/not/exist")

False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值