How do I check whether a file exists without exceptions?

后端 未结 30 1854
北海茫月
北海茫月 2020-11-21 05:07

How do I check if a file exists or not, without using the try statement?

30条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-21 05:40

    If the reason you're checking is so you can do something like if file_exists: open_it(), it's safer to use a try around the attempt to open it. Checking and then opening risks the file being deleted or moved or something between when you check and when you try to open it.

    If you're not planning to open the file immediately, you can use os.path.isfile

    Return True if path is an existing regular file. This follows symbolic links, so both islink() and isfile() can be true for the same path.

    import os.path
    os.path.isfile(fname) 
    

    if you need to be sure it's a file.

    Starting with Python 3.4, the pathlib module offers an object-oriented approach (backported to pathlib2 in Python 2.7):

    from pathlib import Path
    
    my_file = Path("/path/to/file")
    if my_file.is_file():
        # file exists
    

    To check a directory, do:

    if my_file.is_dir():
        # directory exists
    

    To check whether a Path object exists independently of whether is it a file or directory, use exists():

    if my_file.exists():
        # path exists
    

    You can also use resolve(strict=True) in a try block:

    try:
        my_abs_path = my_file.resolve(strict=True)
    except FileNotFoundError:
        # doesn't exist
    else:
        # exists
    

提交回复
热议问题