복붙노트

[PYTHON] 파일이 파이썬에 존재하는지 어떻게 확인합니까?

PYTHON

파일이 파이썬에 존재하는지 어떻게 확인합니까?

try 문을 사용하지 않고 파일이 존재하는지 여부를 어떻게 알 수 있습니까?

해결법

  1. ==============================

    1.검사하고있는 이유가 file_exists : open_it ()과 비슷한 것을 할 수 있다면 열려는 시도를 둘러싼 시도를 사용하는 것이 더 안전합니다. 검사하고 나서 열면 파일이 삭제되거나 이동되거나 검사 할 때와 열려고 할 때 사이에 위험이 있습니다.

    검사하고있는 이유가 file_exists : open_it ()과 비슷한 것을 할 수 있다면 열려는 시도를 둘러싼 시도를 사용하는 것이 더 안전합니다. 검사하고 나서 열면 파일이 삭제되거나 이동되거나 검사 할 때와 열려고 할 때 사이에 위험이 있습니다.

    파일을 바로 열지 않으려면 os.path.isfile을 사용할 수 있습니다.

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

    파일인지 확인해야합니다.

    Python 3.4부터 pathlib 모듈은 객체 지향 접근법을 제공합니다 (Python 2.7에서 pathlib2로 백 포트 됨).

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

    디렉토리를 확인하려면 다음을 수행하십시오.

    if my_file.is_dir():
        # directory exists
    

    Path 객체가 파일인지 디렉토리인지에 관계없이 존재하는지 여부를 확인하려면 exists ()를 사용합니다.

    if my_file.exists():
        # path exists
    

    try 블록에서 resolve ()를 사용할 수도 있습니다.

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

    2.os.path.exists 함수가 있습니다.

    os.path.exists 함수가 있습니다.

    import os.path
    os.path.exists(file_path)
    

    이것은 파일과 디렉토리 모두에 대해 True를 반환하지만 대신

    os.path.isfile(file_name)
    

    특정 파일인지 테스트합니다. 그것은 심볼릭 링크를 따른다.

  3. ==============================

    3.isfile ()과 달리 exists ()는 디렉토리에 대해 True를 반환합니다. 따라서 일반 파일이나 디렉토리 만 원한다면 isfile () 또는 exists ()를 사용하십시오. 다음은 간단한 REPL 출력입니다.

    isfile ()과 달리 exists ()는 디렉토리에 대해 True를 반환합니다. 따라서 일반 파일이나 디렉토리 만 원한다면 isfile () 또는 exists ()를 사용하십시오. 다음은 간단한 REPL 출력입니다.

    >>> print os.path.isfile("/etc/password.txt")
    True
    >>> print os.path.isfile("/etc")
    False
    >>> print os.path.isfile("/does/not/exist")
    False
    >>> print os.path.exists("/etc/password.txt")
    True
    >>> print os.path.exists("/etc")
    True
    >>> print os.path.exists("/does/not/exist")
    False
    
  4. ==============================

    4.

    import os.path
    
    if os.path.isfile(filepath):
    
  5. ==============================

    5.os.access ()와 함께 os.path.isfile ()을 사용하십시오.

    os.access ()와 함께 os.path.isfile ()을 사용하십시오.

    import os
    import os.path
    
    PATH='./file.txt'
    
    if os.path.isfile(PATH) and os.access(PATH, os.R_OK):
        print "File exists and is readable"
    else:
        print "Either the file is missing or not readable"
    
  6. ==============================

    6.

    import os
    os.path.exists(path) # Returns whether the path (directory or file) exists or not
    os.path.isfile(path) # Returns whether the file exists or not
    
  7. ==============================

    7.2017 / 12 / 22:

    2017 / 12 / 22:

    거의 모든 가능한 방법이 기존 답변 (예 : Python 3.4 특정 항목이 추가됨)에 나열되었지만 모든 것을 그룹화하려고 시도합니다.

    참고 : 내가 게시 할 파이썬 표준 라이브러리 코드의 모든 부분은 버전 3.5.3에 속합니다 (의사 인용문은 버전 3에만 해당).

    문제 설명:

    가능한 해결책:

    결론 :

    최종 메모 :

  8. ==============================

    8.이것은 파일이 있는지를 확인하는 가장 간단한 방법입니다. 파일을 검사했을 때 존재했다고해서 파일을 열어야 할 때 파일이 존재한다는 것을 보장하지는 않습니다.

    이것은 파일이 있는지를 확인하는 가장 간단한 방법입니다. 파일을 검사했을 때 존재했다고해서 파일을 열어야 할 때 파일이 존재한다는 것을 보장하지는 않습니다.

    import os
    fname = "foo.txt"
    if os.path.isfile(fname):
        print("file does exist at this time")
    else:
        print("no such file exists at this time")
    
  9. ==============================

    9.Python 3.4+에는 객체 지향 경로 모듈 pathlib가 있습니다. 이 새로운 모듈을 사용하면 파일이 다음과 같은지 여부를 확인할 수 있습니다.

    Python 3.4+에는 객체 지향 경로 모듈 pathlib가 있습니다. 이 새로운 모듈을 사용하면 파일이 다음과 같은지 여부를 확인할 수 있습니다.

    import pathlib
    p = pathlib.Path('path/to/file')
    if p.is_file():  # or p.is_dir() to see if it is a directory
        # do stuff
    

    파일을 열 때 try / except 블록을 계속 사용할 수 있습니다.

    try:
        with p.open() as f:
            # do awesome stuff
    except OSError:
        print('Well darn.')
    

    pathlib 모듈에는 편리한 globbing, 파일 소유자 확인, 경로 결합 등이 포함되어 있습니다. 체크 아웃 할 가치가 있습니다. 구형 Python (버전 2.6 이상)을 사용하고 있다면 pip와 함께 pathlib를 설치할 수 있습니다.

    # installs pathlib2 on older Python versions
    # the original third-party module, pathlib, is no longer maintained.
    pip install pathlib2
    

    그런 다음 다음과 같이 가져옵니다.

    # Older Python versions
    import pathlib2 as pathlib
    
  10. ==============================

    10.try 문을 선호하십시오. 더 나은 스타일로 간주되어 경쟁 조건을 피합니다.

    try 문을 선호하십시오. 더 나은 스타일로 간주되어 경쟁 조건을 피합니다.

    내 말을 믿지 마라. 이 이론에 대한 많은 지원이 있습니다. 한 쌍있다 :

  11. ==============================

    11.이제는 Python 3.4부터 사용할 수 있으며 파일 이름으로 Path 객체를 가져 와서 인스턴스화하고 is_file 메소드를 확인합니다 (일반 파일을 가리키는 심볼릭 링크의 경우 True를 반환합니다).

    이제는 Python 3.4부터 사용할 수 있으며 파일 이름으로 Path 객체를 가져 와서 인스턴스화하고 is_file 메소드를 확인합니다 (일반 파일을 가리키는 심볼릭 링크의 경우 True를 반환합니다).

    >>> from pathlib import Path
    >>> Path('/').is_file()
    False
    >>> Path('/initrd.img').is_file()
    True
    >>> Path('/doesnotexist').is_file()
    False
    

    Python 2를 사용하고 있다면 pypi, pathlib2에서 pathlib 모듈을 백 포트하거나 os.path 모듈에서 isfile을 확인할 수있다.

    >>> import os
    >>> os.path.isfile('/')
    False
    >>> os.path.isfile('/initrd.img')
    True
    >>> os.path.isfile('/doesnotexist')
    False
    

    이제 위의 내용은 아마도 실용적인 직접 답변 일 수도 있지만 경쟁하려는 상황에 따라 경쟁 조건이 발생할 수 있으며 기본 구현에는 try가 사용되지만 Python에서는 모든 환경에서 try를 사용합니다. 이행.

    파이썬은 어디에서나 try를 사용하기 때문에이를 사용하는 구현을 피할 이유가 없습니다.

    그러나이 답변의 나머지 부분에서는 이러한주의 사항을 고려하려고합니다.

    Python 3.4부터 사용 가능하며 pathlib에 새로운 Path 객체를 사용하십시오. .exists는 디렉토리가 파일이 아니기 때문에 (파일이 유닉스라는 점을 제외하고는) 모든 디렉토리가 파일이 아니기 때문에 적절하지 않습니다.

    >>> from pathlib import Path
    >>> root = Path('/')
    >>> root.exists()
    True
    

    그래서 우리는 is_file을 사용할 필요가있다.

    >>> root.is_file()
    False
    

    is_file에 대한 도움말은 다음과 같습니다.

    is_file(self)
        Whether this path is a regular file (also True for symlinks pointing
        to regular files).
    

    이제 우리가 알고있는 파일을 파일로 만들어 보겠습니다.

    >>> import tempfile
    >>> file = tempfile.NamedTemporaryFile()
    >>> filepathobj = Path(file.name)
    >>> filepathobj.is_file()
    True
    >>> filepathobj.exists()
    True
    

    기본적으로 NamedTemporaryFile은 닫힐 때 파일을 삭제합니다 (참조가 더 이상 존재하지 않으면 자동으로 닫힙니다).

    >>> del file
    >>> filepathobj.exists()
    False
    >>> filepathobj.is_file()
    False
    

    구현을 파고 들면 is_file이 try를 사용한다는 것을 알 수있다.

    def is_file(self):
        """
        Whether this path is a regular file (also True for symlinks pointing
        to regular files).
        """
        try:
            return S_ISREG(self.stat().st_mode)
        except OSError as e:
            if e.errno not in (ENOENT, ENOTDIR):
                raise
            # Path doesn't exist or is a broken symlink
            # (see https://bitbucket.org/pitrou/pathlib/issue/12/)
            return False
    

    우리는 경쟁 조건을 피하기 때문에 시험을 좋아합니다. try를 사용하면 단순히 파일을 읽으려고 시도하고 거기에있을 것으로 예상하고, 그렇지 않을 경우 예외를 catch하고 대체 동작이 의미가있는 작업을 수행합니다.

    파일을 읽으려고 시도하기 전에 파일이 있는지 확인하고 삭제하려고하면 다중 스레드 또는 프로세스를 사용하고 있거나 다른 프로그램이 해당 파일을 알고 삭제할 수 있습니다. 경쟁 조건은 그것이 존재하는지 확인하면 조건 (존재)이 변경되기 전에 열리기 때문에 경쟁 조건이 존재합니다.

    경쟁 조건은 프로그램을 실패하게 만들 수있는 매우 작은 창 때문에 디버그하기가 매우 어렵습니다.

    그러나 이것이 당신의 동기라면, 억압 컨텍스트 관리자를 사용하여 try 문의 값을 얻을 수 있습니다.

    파이썬 3.4에서는 우리가 억압 컨텍스트 관리자 (이전에는 무시 컨텍스트 관리자)를 제공합니다.이 컨텍스트 관리자는 더 적은 수의 줄에서 의미 상으로는 똑같은 작업을 수행하고, 원래는 적어도 문법적으로 만 수행하면 try 문을 피할 수 있습니다.

    from contextlib import suppress
    from pathlib import Path
    

    용법:

    >>> with suppress(OSError), Path('doesnotexist').open() as f:
    ...     for line in f:
    ...         print(line)
    ... 
    >>>
    >>> with suppress(OSError):
    ...     Path('doesnotexist').unlink()
    ... 
    >>> 
    

    이전의 Pythons에서는 자신 만의 진압을 굴릴 수는 있었지만 시도하지 않고서는보다 자세한 정보를 얻을 수 있습니다. 나는 이것이 실제로 컨텍스트 관리자를 사용하기 때문에 파이썬 3.4 이전에 적용될 수있는 파이썬의 모든 레벨에서 사용하지 않는 유일한 대답이라고 생각한다.

    class suppress(object):
        def __init__(self, *exceptions):
            self.exceptions = exceptions
        def __enter__(self):
            return self
        def __exit__(self, exc_type, exc_value, traceback):
            if exc_type is not None:
                return issubclass(exc_type, self.exceptions)
    

    아마 쉽게 시도 :

    from contextlib import contextmanager
    
    @contextmanager
    def suppress(*exceptions):
        try:
            yield
        except exceptions:
            pass
    

    ISFILE

    import os
    os.path.isfile(path)
    

    문서에서 :

    그러나이 함수의 소스를 살펴보면 실제로 try 문을 사용한다는 것을 알 수 있습니다.

    >>> OSError is os.error
    True
    

    모든 작업은 주어진 경로를 사용하여 통계를 얻을 수 있는지 여부를 확인하고 OSError를 포착 한 다음 예외가 발생하지 않은 경우 파일인지 확인합니다.

    파일을 가지고 무엇인가를하고자한다면, race-condition을 피하기 위해 try-except와 함께 직접 시도해 볼 것을 제안합니다 :

    try:
        with open(path) as f:
            f.read()
    except OSError:
        pass
    

    os.access

    유닉스에서 사용 가능하며 Windows는 os.access이지만 플래그를 전달해야하므로 파일과 디렉토리를 구별하지 않습니다. 실제 호출하는 사용자가 상승 된 권한 환경에 액세스 할 수 있는지 테스트하는 데 더 많이 사용됩니다.

    import os
    os.access(path, os.F_OK)
    

    또한 isfile과 같은 경쟁 조건 문제로 어려움을 겪습니다. 문서에서 :

    os.access를 사용하지 마십시오. 위에 설명 된 상위 수준의 개체 및 기능보다 사용자 오류 가능성이 더 많은 저급 기능입니다.

    또 다른 대답은 os.access에 대해 다음과 같이 말합니다.

    이 답변은 비이용적이고 오류가 발생하지 않는 방법을 선호한다고 말합니다. 그것은 사용자가 그들을 이해하지 않고 낮은 수준의 API를 사용하도록 권장하는 것 같습니다.

    또한 True를 무조건적으로 돌려줌으로써 (KeyboardInterrupt와 SystemExit!를 포함한) 모든 예외가 자동으로 패스 할 수있게하는 컨텍스트 관리자를 생성합니다. 이것은 버그를 숨기는 좋은 방법입니다.

    이것은 사용자가 빈약 한 관행을 채택하도록 유도하는 것으로 보인다.

  12. ==============================

    12.

    import os
    #Your path here e.g. "C:\Program Files\text.txt"
    #For access purposes: "C:\\Program Files\\text.txt"
    if os.path.exists("C:\..."):   
        print "File found!"
    else:
        print "File not found!"
    

    os를 가져 오면 운영 체제에서 표준 작업을보다 쉽게 ​​탐색하고 수행 할 수 있습니다.

    참고로 Python을 사용하여 파일이 존재하는지 확인하는 방법도 참조하십시오.

    높은 수준의 작업이 필요한 경우 shutil을 사용하십시오.

  13. ==============================

    13.os.path.isfile (), os.path.isdir () 및 os.path.exists ()를 사용하여 파일 및 폴더 테스트

    os.path.isfile (), os.path.isdir () 및 os.path.exists ()를 사용하여 파일 및 폴더 테스트

    "경로"가 유효한 경로라고 가정하면이 테이블은 파일 및 폴더에 대해 각 함수가 반환하는 내용을 보여줍니다.

    또한 os.path.splitext ()를 사용하여 특정 유형의 파일인지 테스트하여 확장을 가져올 수 있습니다 (아직 모르는 경우).

    >>> import os
    >>> path = "path to a word document"
    >>> os.path.isfile(path)
    True
    >>> os.path.splitext(path)[1] == ".docx" # test if the extension is .docx
    True
    
  14. ==============================

    14.2016 년 가장 좋은 방법은 여전히 ​​os.path.isfile을 사용하는 것입니다.

    2016 년 가장 좋은 방법은 여전히 ​​os.path.isfile을 사용하는 것입니다.

    >>> os.path.isfile('/path/to/some/file.txt')
    

    또는 파이썬 3에서는 pathlib를 사용할 수 있습니다 :

    import pathlib
    path = pathlib.Path('/path/to/some/file.txt')
    if path.is_file():
        ...
    
  15. ==============================

    15.try / except와 isfile () 사이에 의미있는 기능 차이가있는 것처럼 보이지 않으므로 어느 것이 합리적인지를 사용해야합니다.

    try / except와 isfile () 사이에 의미있는 기능 차이가있는 것처럼 보이지 않으므로 어느 것이 합리적인지를 사용해야합니다.

    파일을 읽으려는 경우 파일이 있으면이를 수행하십시오.

    try:
        f = open(filepath)
    except IOError:
        print 'Oh dear.'
    

    그러나 파일이 있으면 이름을 바꿔서 열 필요가없는 경우에는

    if os.path.isfile(filepath):
        os.rename(filepath, filepath + '.old')
    

    파일에 쓰기를 원한다면 존재하지 않는다면

    # python 2
    if not os.path.isfile(filepath):
        f = open(filepath, 'w')
    
    # python 3, x opens for exclusive creation, failing if the file already exists
    try:
        f = open(filepath, 'wx')
    except IOError:
        print 'file already exists'
    

    파일 잠금이 필요한 경우 다른 문제입니다.

  16. ==============================

    16.당신은 이것을 시도 할 수 있습니다 (더 안전한) :

    당신은 이것을 시도 할 수 있습니다 (더 안전한) :

    try:
        # http://effbot.org/zone/python-with-statement.htm
        # 'with' is safer to open a file
        with open('whatever.txt') as fh:
            # Do something with 'fh'
    except IOError as e:
        print("({})".format(e))
    

    출력은 다음과 같습니다.

    그런 다음 결과에 따라 프로그램을 계속 실행하거나 원하는 경우 코드를 중지 할 수 있습니다.

  17. ==============================

    17.try와 except 문을 사용하는 것이 항상 권장되지만, 다음과 같은 몇 가지 가능성이 있습니다 (개인적으로 좋아하는 os.access 사용).

    try와 except 문을 사용하는 것이 항상 권장되지만, 다음과 같은 몇 가지 가능성이 있습니다 (개인적으로 좋아하는 os.access 사용).

    또한 파일의 존재 여부를 확인할 수없는 두 가지 방법이 있음을 언급해야합니다. 문제가 허가가 거부되거나 해당 파일이나 디렉토리가 없습니다. IOError를 잡으면 IOError를 e (첫 번째 옵션처럼)로 설정 한 다음 print (e.args)를 입력하면 문제를 확인할 수 있습니다. 도움이되기를 바랍니다! :)

  18. ==============================

    18.Python 3.4에서는 언어가 파일을 관리하는 새로운 모듈을 제공합니다.

    Python 3.4에서는 언어가 파일을 관리하는 새로운 모듈을 제공합니다.

    import pathlib
    path = pathlib.Path('path/to/file')
    if path.is_file(): # If you want to check a directory: path.is_dir()
        # If it is true, return true on your code.
    
  19. ==============================

    19.또한, os.access () :

    또한, os.access () :

    if os.access("myfile", os.R_OK):
        with open("myfile") as fp:
            return fp.read()
    

    R_OK, W_OK 및 X_OK는 사용 권한 (doc)을 테스트하기위한 플래그입니다.

  20. ==============================

    20.파일을 여는 경우 다음 기술 중 하나를 사용할 수 있습니다.

    파일을 여는 경우 다음 기술 중 하나를 사용할 수 있습니다.

    >>> with open('somefile', 'xt') as f: #Using the x-flag, Python3.3 and above
    ...     f.write('Hello\n')
    
    >>> if not os.path.exists('somefile'): 
    ...     with open('somefile', 'wt') as f:
    ...         f.write("Hello\n")
    ... else:
    ...     print('File already exists!')
    

    최신 정보

    그냥 혼란을 피하기 위해 내가 가진 대답을 기반으로, 현재 답변은 주어진 이름으로 파일이나 디렉토리를 찾습니다.

  21. ==============================

    21.

    if os.path.isfile(path_to_file):
        try: 
            open(path_to_file)
                pass
        except IOError as e:
            print "Unable to open file"
    

    SRC : http://www.pfinn.net/python-check-if-file-exists.html

  22. ==============================

    22.시도하지 않고 Brian의 제안을 작성할 수 있습니다.

    시도하지 않고 Brian의 제안을 작성할 수 있습니다.

    from contextlib import suppress
    
    with suppress(IOError), open('filename'):
        process()
    

    suppress는 Python 3.4의 일부입니다. 이전 버전에서는 신속하게 직접 작성을 할 수 있습니다.

    from contextlib import contextmanager
    
    @contextmanager
    def suppress(*exceptions):
        try:
            yield
        except exceptions:
            pass
    
  23. ==============================

    23.다음은 Linux 명령 행 환경을위한 1 행 Python 명령입니다. 나는 이처럼 뜨거운 배쉬 녀석이 아니기 때문에 이것을 아주 잘 찾는다.

    다음은 Linux 명령 행 환경을위한 1 행 Python 명령입니다. 나는 이처럼 뜨거운 배쉬 녀석이 아니기 때문에 이것을 아주 잘 찾는다.

    python -c "import os.path; print os.path.isfile('/path_to/file.xxx')"
    

    이것이 도움이되기를 바랍니다.

  24. ==============================

    24.다른 답변에 정확히 반영되지 않은 약간의 변형을 추가합니다.

    다른 답변에 정확히 반영되지 않은 약간의 변형을 추가합니다.

    이것은 file_path가 None 또는 빈 문자열 인 경우를 처리합니다.

    def file_exists(file_path):
        if not file_path:
            return False
        elif not os.path.isfile(file_path):
            return False
        else:
            return True
    

    Shahbaz에서 제안을 기반으로 변형을 추가

    def file_exists(file_path):
        if not file_path:
            return False
        else:
            return os.path.isfile(file_path)
    

    Peter Wood의 제안을 기반으로 변형 추가

    def file_exists(file_path):
        return file_path and os.path.isfile(file_path):
    
  25. ==============================

    25.다음 세 가지 방법을 따를 수 있습니다.

    다음 세 가지 방법을 따를 수 있습니다.

    import os.path
    os.path.isfile(filename) # True if file exists
    os.path.isfile(dirname) # False if directory exists
    
    import os.path
    os.path.exists(filename) # True if file exists
    os.path.exists(dirname) #True if directory exists
    
    from pathlib import Path
    Path(filename).exists()
    
  26. ==============================

    26.저는 약 10 년 동안 있었던 패키지의 저자이며,이 문제를 직접 해결하는 기능을 가지고 있습니다. 기본적으로 비 Windows 시스템을 사용하는 경우 Popen을 사용하여 find에 액세스합니다. 그러나 Windows를 사용하는 경우 효율적인 파일 시스템 워커를 사용하여 find를 복제합니다.

    저는 약 10 년 동안 있었던 패키지의 저자이며,이 문제를 직접 해결하는 기능을 가지고 있습니다. 기본적으로 비 Windows 시스템을 사용하는 경우 Popen을 사용하여 find에 액세스합니다. 그러나 Windows를 사용하는 경우 효율적인 파일 시스템 워커를 사용하여 find를 복제합니다.

    코드 자체는 try 블록을 사용하지 않습니다 ... 운영 체제를 결정할 때를 제외하고 "Unix"스타일 찾기 또는 손으로 작성한 찾기로 이동하십시오. 타이밍 테스트에 따르면 OS를 결정할 때 try가 더 빨랐다. 그래서 나는 거기에서 하나를 사용했다.

    >>> import pox
    >>> pox.find('*python*', type='file', root=pox.homedir(), recurse=False)
    ['/Users/mmckerns/.python']
    

    그리고 의사가 ...

    >>> print pox.find.__doc__
    find(patterns[,root,recurse,type]); Get path to a file or directory
    
        patterns: name or partial name string of items to search for
        root: path string of top-level directory to search
        recurse: if True, recurse down from root directory
        type: item filter; one of {None, file, dir, link, socket, block, char}
        verbose: if True, be a little verbose about the search
    
        On some OS, recursion can be specified by recursion depth (an integer).
        patterns can be specified with basic pattern matching. Additionally,
        multiple patterns can be specified by splitting patterns with a ';'
        For example:
            >>> find('pox*', root='..')
            ['/Users/foo/pox/pox', '/Users/foo/pox/scripts/pox_launcher.py']
    
            >>> find('*shutils*;*init*')
            ['/Users/foo/pox/pox/shutils.py', '/Users/foo/pox/pox/__init__.py']
    
    >>>
    

    구현은, 당신이 보살 피는 경우 여기에 있습니다 : https://github.com/uqfoundation/pox/blob/89f90fb308f285ca7a62eabe2c38acb87e89dad9/pox/shutils.py#L190

  27. ==============================

    27.날짜 : 2017-12-04

    날짜 : 2017-12-04

    가능한 모든 해결책이 다른 대답에 나열되어 있습니다.

    파일이 존재 하는지를 확인하는 직관적이고 논쟁 할 수있는 방법은 다음과 같습니다.

    import os
    os.path.isfile('~/file.md')    # Returns True if exists, else False
    additionaly check a dir
    os.path.isdir('~/folder') # Returns True if the folder exists, else False
    check either a dir or a file
    os.path.exists('~/file')
    

    참조 용 철저한 치트 시트를 만들었습니다.

    #os.path methods in exhaustive cheatsheet
    {'definition': ['dirname',
                   'basename',
                   'abspath',
                   'relpath',
                   'commonpath',
                   'normpath',
                   'realpath'],
    'operation': ['split', 'splitdrive', 'splitext',
                   'join', 'normcase'],
    'compare': ['samefile', 'sameopenfile', 'samestat'],
    'condition': ['isdir',
                  'isfile',
                  'exists',
                  'lexists'
                  'islink',
                  'isabs',
                  'ismount',],
     'expand': ['expanduser',
                'expandvars'],
     'stat': ['getatime', 'getctime', 'getmtime',
              'getsize']}
    
  28. ==============================

    28.파이썬의 "OS"라이브러리를 사용할 수 있습니다 :

    파이썬의 "OS"라이브러리를 사용할 수 있습니다 :

    >>> import os
    >>> os.path.exists("C:\\Users\\####\\Desktop\\test.txt") 
    True
    >>> os.path.exists("C:\\Users\\####\\Desktop\\test.tx")
    False
    
  29. ==============================

    29.2016 년에도 여전히 파일이 존재하고 파일인지 확인하는 가장 쉬운 방법입니다.

    2016 년에도 여전히 파일이 존재하고 파일인지 확인하는 가장 쉬운 방법입니다.

    import os
    os.path.isfile('./file.txt')    # Returns True if exists, else False
    

    isfile은 실제로 내부적으로 os.stat와 stat.S_ISREG (mode)를 사용하는 도우미 메서드입니다. 이 os.stat은 파일, 디렉토리, 소켓, 버퍼 등에 대한 자세한 정보를 제공하는 하위 레벨 방법입니다. os.stat에 대한 자세한 내용은 여기

    참고 : 그러나이 방법은 파일을 어떤 식 으로든 잠그지 않으므로 코드가 "사용 시간 확인"(TOCTTOU) 버그에 취약해질 수 있습니다.

    따라서 예외를 발생시키는 것은 프로그램에서 흐름 제어를위한 허용 가능한 Pythonic 접근 방식으로 간주됩니다. 그리고 if 문 (그냥 조언)보다는 IOErrors가있는 누락 된 파일을 처리하는 것을 고려해야합니다.

  30. ==============================

    30.

    import os
    path = /path/to/dir
    
    root,dirs,files = os.walk(path).next()
    if myfile in files:
       print "yes it exists"
    

    이는 여러 파일을 검사 할 때 유용합니다. 또는 기존 목록과 설정된 교차 / 차감을 수행하려고합니다.

  31. from https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-in-python by cc-by-sa and MIT license