回答

收藏

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

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

怎样不用?try检查句子中是否存在文件?- I4 X6 k- H. K1 Y- B# s8 l
                                                               
" D9 z1 _  I% ], u: l( |9 a    解决方案:                                                                ! v9 \( z0 _+ F& y( h" B3 y& e
                                                                如果您检查的原因是您可以执行类似的操作if file_exists: open_it(),使用 atry试着打开它会更安全。检查和打开文件可能会被删除或移动,或者在您检查和尝试打开之间发生一些事情。$ y  X7 S' _* T0 X. o) C
如果不打算马上打开文件,可以用 os.path.isfile
  |' U  ]* |6 Q6 N3 ]True如果路径是现有的常规文件,则返回。这遵循符号链接,因此islink()和isfile()对于同一条路径可以是真的。
" T, `5 d  c/ d, E6 @! S4 k
    import os.pathos.path.isfile(fname)
    - @' K* V; p1 m
假如你需要确定它是一个文件。( G, E; T% w# n% V
从 Python 3.4 开始,该pathlib该模块为面向对象提供了一种方法(pathlib2在 Python 2.7 中向后移植):
: K) c# ~( Y0 H- Q3 V- w
    from pathlib import Pathmy_file = Path("/path/to/file")if my_file.is_file():    # file exists
    4 A; N# K+ _3 Z
检查目录,请执行以下操作:
& F: X% i: J- B* o9 @
    if my_file.is_dir():    # directory exists: u5 ]0 p; N6 W) n) i7 v4 j
要检查Path请使用对象是否独立于文件或目录exists():# R. l( _- N  x1 B
    if my_file.exists():    # path exists
    " R! l7 n- [. `  s# M/ \. x" A
您还可以resolve(strict=True)在try块中使用:) j3 c$ N" s( h
    try:    my_abs_path = my_file.resolve(strict=True)except FileNotFoundError:    # doesn't existelse:    # exists* w& x! f3 m5 p/ z' ?) g) u& u
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则