回答

收藏

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

技术问答 技术问答 596 人阅读 | 0 人回复 | 2023-09-11

怎样不用?try检查句子中是否存在文件?6 A, z: O, t1 U0 K  }! z3 ?! p5 D
                                                               
# ^4 b% K$ J8 l) X9 E" o    解决方案:                                                               
7 H8 a4 _7 J" @# c* g/ }                                                                如果您检查的原因是您可以执行类似的操作if file_exists: open_it(),使用 atry试着打开它会更安全。检查和打开文件可能会被删除或移动,或者在您检查和尝试打开之间发生一些事情。+ [1 Z4 n1 g. @, w- p( F" f0 i
如果不打算马上打开文件,可以用 os.path.isfile
! c8 T  e$ ^! p6 f  l: o7 LTrue如果路径是现有的常规文件,则返回。这遵循符号链接,因此islink()和isfile()对于同一条路径可以是真的。- t# a8 }# m! g' h7 D6 ~% |. M
    import os.pathos.path.isfile(fname)
      l4 Z" m  V$ a% p7 Y/ f+ M7 y
假如你需要确定它是一个文件。! ]- M% y: b$ g
从 Python 3.4 开始,该pathlib该模块为面向对象提供了一种方法(pathlib2在 Python 2.7 中向后移植):
2 J' U  s; x: h; |# Z; U% L2 [
    from pathlib import Pathmy_file = Path("/path/to/file")if my_file.is_file():    # file exists# Q# b& x) u  \5 c
检查目录,请执行以下操作:
4 l& P% [+ c4 T5 ?" \
    if my_file.is_dir():    # directory exists
    , j+ |* o2 l. W( G  Z7 M9 J
要检查Path请使用对象是否独立于文件或目录exists():% @5 y+ k. }1 @0 ]+ W! G
    if my_file.exists():    # path exists
    % G+ }3 v8 U- s" g- Z/ p6 o
您还可以resolve(strict=True)在try块中使用:
& L& t+ r$ {/ p5 a3 I! N- T; H6 _
    try:    my_abs_path = my_file.resolve(strict=True)except FileNotFoundError:    # doesn't existelse:    # exists0 {' x, ~4 w& G2 [
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则