파일이 존재하는지 확인하는 Pythonic 방법? [복제]
이 질문에는 이미 답변이 있습니다.
- 예외없이 파일이 존재하는지 어떻게 확인합니까? 답변 37 개
파일이 존재하는지 여부를 확인하는 기본 방법은 무엇입니까?
경로가 기존 파일인지 확인하려면
경로 가 기존 일반 파일 인
True
경우 반환 합니다. 이 기호 링크를 따라, 그래서 모두 와 동일한 경로에 대해 사실이 될 수 있습니다.islink()
isfile()
os.path.isfile
다른 사람들이 제안한 대신을 사용 os.path.exists
하는 것이 좋습니다 .이 파일은 일반 파일인지 여부뿐만 아니라 해당 이름을 가진 모든 항목을 검사합니다.
그러므로:
if not os.path.exists(filename):
file(filename, 'w').close()
또는
file(filename, 'w+').close()
후자는 파일이있는 경우 파일을 작성하지만 그렇지 않은 경우 파일을 작성합니다. 그러나 파일이 존재하면 실패하지만 파일을 쓸 수있는 권한이 없습니다. 그래서 첫 번째 솔루션을 선호합니다.
여기에있는 다른 모든 답변은 제안 된 솔루션으로 발생하는 경쟁 조건을 해결하지 못하는 것 같습니다.
파일 존재를 먼저 확인한 다음 프로그램에서 몇 줄 후반에 코드를 작성하면 파일을 보지 않고 문제가 발생하거나 파일 소유자가 발생하는 동안 파일이 생성 될 위험이 있습니다. "다른 파일"문제).
이런 종류의 것을 피하고 싶다면 다음과 같은 것을 제안합니다.
import os
def open_if_not_exists(filename):
try:
fd = os.open(filename, os.O_CREAT | os.O_EXCL | os.O_WRONLY)
except OSError, e:
if e.errno == 17:
print e
return None
else:
raise
else:
return os.fdopen(fd, 'w')
파일이 없으면 쓰기 위해 파일을 열고 파일 객체를 반환해야합니다. 존재하는 경우 "Ooops"를 인쇄하고 None을 반환합니다 ( 예상되지 않은 python documentation 읽기만을 기반으로 하므로 100 % 정확하지 않을 수 있음).
파일이 존재하지 않는 경우 파일을 비워 두려면 가장 간단한 방법은
with open(thepath, 'a'): pass
(Python 2.6 이상; 2.5에서는 모듈 상단에 "미래에서 가져 오기"가 필요합니다).
반면에 파일이 존재하는 경우 파일을 그대로 두려면 비어 있지 않은 특정 내용을 다른 곳에두면 if os.path.isfile(thepath):
/ else
문 블록을 기반으로 한 더 복잡한 접근법 이 더 적합합니다.
이것은 나에게 가장 좋은 방법이었습니다. 기존의 모든 파일을 검색 할 수 있습니다 (심볼릭 링크 또는 일반 파일).
os.path.lexists (경로)
Return True if path refers to an existing path. Returns True for broken symbolic links. Equivalent to exists() on platforms lacking os.lstat().
New in version 2.4.
참고 URL : https://stackoverflow.com/questions/2259382/pythonic-way-to-check-if-a-file-exists
'IT' 카테고리의 다른 글
MySQL 테이블에서 열을 이동하는 방법? (0) | 2020.05.17 |
---|---|
최신 git commit에서 간단히 패치를 작성하려면 어떻게해야합니까? (0) | 2020.05.17 |
Visual Studio 2015 추가 디버그 옵션 비활성화 (0) | 2020.05.17 |
dyld : 라이브러리가로드되지 않음 : Mac에서 brew를 사용하여 노드를 설치 한 후 PHP를 실행하는 /usr/local/opt/icu4c/lib/libicui18n.62.dylib 오류 (0) | 2020.05.16 |
psql : 치명적 : 사용자“dev”에 대한 피어 인증에 실패했습니다 (0) | 2020.05.16 |