回答

收藏

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

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

怎样不用?try检查句子中是否存在文件?
3 z1 v1 `( G% o' S: i                                                                & J% C; I2 F: F( q8 D' D$ }
    解决方案:                                                               
! u0 d' j- z& o  Y% A0 ~6 T/ c8 _5 Z                                                                如果您检查的原因是您可以执行类似的操作if file_exists: open_it(),使用 atry试着打开它会更安全。检查和打开文件可能会被删除或移动,或者在您检查和尝试打开之间发生一些事情。$ b' d# r) K* }" @2 X: f! N2 x1 ?
如果不打算马上打开文件,可以用 os.path.isfile
( ]4 P- c1 n8 y6 n! j9 L3 pTrue如果路径是现有的常规文件,则返回。这遵循符号链接,因此islink()和isfile()对于同一条路径可以是真的。; r& x1 u0 c( D
    import os.pathos.path.isfile(fname) 3 G& W/ [1 W" ~3 e! }6 K; G
假如你需要确定它是一个文件。! p% H% B% s' }0 Y, g, B
从 Python 3.4 开始,该pathlib该模块为面向对象提供了一种方法(pathlib2在 Python 2.7 中向后移植):
8 F2 C* Q+ h2 I0 l+ [
    from pathlib import Pathmy_file = Path("/path/to/file")if my_file.is_file():    # file exists& G* m% g' D5 v& [- C; `- y
检查目录,请执行以下操作:) g) C  E7 O5 |9 j5 t2 i& E* P7 |
    if my_file.is_dir():    # directory exists
    8 e$ o3 h" b& E" J/ G3 g
要检查Path请使用对象是否独立于文件或目录exists():
  \; P. I. J, e! s
    if my_file.exists():    # path exists
    - a0 w! N! j/ i/ q0 N/ \
您还可以resolve(strict=True)在try块中使用:
7 \8 l/ _' U5 H% D' k
    try:    my_abs_path = my_file.resolve(strict=True)except FileNotFoundError:    # doesn't existelse:    # exists$ x) W* A$ D: g! J" G& ?
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则