回答

收藏

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

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

怎样不用?try检查句子中是否存在文件?1 C) d# T+ c' k+ _, v3 z
                                                               
- @- F9 |, _3 L+ J    解决方案:                                                                5 h. n% t3 F9 S" n3 R  E
                                                                如果您检查的原因是您可以执行类似的操作if file_exists: open_it(),使用 atry试着打开它会更安全。检查和打开文件可能会被删除或移动,或者在您检查和尝试打开之间发生一些事情。$ ^" x/ F% D8 T3 X: b. U
如果不打算马上打开文件,可以用 os.path.isfile
  C3 _/ w3 W7 D6 i1 L; n& [True如果路径是现有的常规文件,则返回。这遵循符号链接,因此islink()和isfile()对于同一条路径可以是真的。
* A. R# T) q' U  N; G
    import os.pathos.path.isfile(fname)
    7 h- Z0 O3 V/ s$ n; [  g9 F9 Y7 b( y& [
假如你需要确定它是一个文件。
2 a3 r4 W, q0 p; ~从 Python 3.4 开始,该pathlib该模块为面向对象提供了一种方法(pathlib2在 Python 2.7 中向后移植):
8 |% H: Z( C& T6 d& I
    from pathlib import Pathmy_file = Path("/path/to/file")if my_file.is_file():    # file exists
    9 R7 S; b7 A5 p/ k8 p# V
检查目录,请执行以下操作:
* ]& c: [4 B% d
    if my_file.is_dir():    # directory exists! M. @6 X' d4 R1 u4 \" E: n% g
要检查Path请使用对象是否独立于文件或目录exists():
1 _" t+ t5 L* w4 C' b! p
    if my_file.exists():    # path exists
    7 k6 Y# M1 t: r* ^. @5 |
您还可以resolve(strict=True)在try块中使用:
  b- g3 |* E* [1 u8 y+ e
    try:    my_abs_path = my_file.resolve(strict=True)except FileNotFoundError:    # doesn't existelse:    # exists
      v7 G* |/ }3 \* H( ^' d
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则