티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

How do I check whether a file exists without exceptions?

파일이 있는지 확인하는 방법

 문제 내용 

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

try 문을 사용하지 않고 파일의 존재 여부를 확인하려면 어떻게 해야 합니까?

 

 

 

 높은 점수를 받은 Solution 

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.

확인하는 이유가 file_exists: open_it()과 같은 작업을 수행하기 위해서라면 열어보는 시도를 try하는 것이 안전합니다.
파일을 검사한 다음 열면 파일을 검사할 때와 열려고 할 때 사이에 파일이 삭제되거나 이동될 위험이 있습니다.

 

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

파일을 바로 열 계획이 없다면 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.

경로가 기존의 일반 파일인 경우 True를 반환합니다. 이는 심볼릭 링크를 따르므로 islink()와 isfile() 모두 동일한 경로에 대해 참일 수 있다.

 

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):

파이썬 3.4부터 pathlib 모듈은 객체 지향 접근법을 제공한다.
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():

경로 개체가 파일인지 디렉터리인지 여부와 독립적으로 존재하는지 확인하려면 exists()를 사용합니다.
if my_file.exists():
    # path exists

 

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

try 블록에서 resolve(엄격=True)를 사용할 수도 있습니다.
try:
    my_abs_path = my_file.resolve(strict=True)
except FileNotFoundError:
    # doesn't exist
else:
    # exists

 

 

 가장 최근 달린 Solution 

Another possible option is to check whether the filename is in the directory using os.listdir():

다른 가능한 옵션은 os.listdir()를 사용하여 파일 이름이 디렉터리에 있는지 확인하는 것입니다.
import os
if 'foo.txt' in os.listdir():
    # Do things

 

This will return true if it is and false if not.

이 값은 true이면 true로 반환되고 그렇지 않으면 false로 반환됩니다.

 

 

 

출처 : https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions

반응형
댓글
공지사항
최근에 올라온 글