回答

收藏

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

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

怎样不用?try检查句子中是否存在文件?" ?- `& \: R9 N$ Z/ K9 e2 P
                                                                  s$ u# _/ n2 d# \/ ?" ^* u! E, ^) V
    解决方案:                                                               
$ S9 j$ ]' C% [) {                                                                如果您检查的原因是您可以执行类似的操作if file_exists: open_it(),使用 atry试着打开它会更安全。检查和打开文件可能会被删除或移动,或者在您检查和尝试打开之间发生一些事情。
$ O# E! y8 i- V$ s! ]如果不打算马上打开文件,可以用 os.path.isfile( t* o& W2 |) w( i
True如果路径是现有的常规文件,则返回。这遵循符号链接,因此islink()和isfile()对于同一条路径可以是真的。/ j' S, I5 \7 H, W  l
    import os.pathos.path.isfile(fname) % i% L4 b+ V$ \1 \
假如你需要确定它是一个文件。
4 f# i( b0 d" r* i: ]从 Python 3.4 开始,该pathlib该模块为面向对象提供了一种方法(pathlib2在 Python 2.7 中向后移植):; N) d: R5 w# I* R" c$ d) S  U' G/ j
    from pathlib import Pathmy_file = Path("/path/to/file")if my_file.is_file():    # file exists
    " v) w: T' W/ Z: M( B+ h3 b' k
检查目录,请执行以下操作:
3 O: Y) _8 n- G, X) q+ ~  k
    if my_file.is_dir():    # directory exists
    + i. p/ R# F3 d. n& `8 Q
要检查Path请使用对象是否独立于文件或目录exists():7 D1 d6 d3 d9 U& ]/ y; D* @1 q
    if my_file.exists():    # path exists
    : _9 S+ r- t* x7 \
您还可以resolve(strict=True)在try块中使用:
3 t) v0 u/ Q! `. B% {
    try:    my_abs_path = my_file.resolve(strict=True)except FileNotFoundError:    # doesn't existelse:    # exists
    - `7 e; U- {% }$ U, z3 V
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则