파일이 있는지 확인하는 방법?
파일이 존재하는지, 생성되지 않았는지 확인하는 방법은 무엇입니까?
경로가 기존 파일인지 확인하려면:
돌아가다
True
경로가 기존 일반 파일인 경우.이것은 심볼릭 링크를 따르기 때문에 둘 다islink()
그리고.isfile()
같은 경로에 대해 true일 수 있습니다.
대신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')
파일이 아직 존재하지 않는 경우 쓰기 위해 파일이 열리고 파일 개체가 반환됩니다.존재하는 경우 "OOPS"를 인쇄하고 "None"을 반환합니다(테스트되지 않았으며 python 문서를 읽는 것만으로 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
'itsource' 카테고리의 다른 글
Sublime Text 2에서 Python 코드를 실행하려면 어떻게 해야 하나요? (0) | 2022.09.24 |
---|---|
is_a와 instance of의 차이점은 무엇입니까? (0) | 2022.09.24 |
MySQL을 OSX 10.7 Lion으로 사용하기 (0) | 2022.09.24 |
어레이 목록의 길이를 찾는 방법 (0) | 2022.09.24 |
오브젝트 타입을 결정하시겠습니까? (0) | 2022.09.23 |