디렉토리가 없으면 디렉토리를 작성할 수도 있습니다.
출처아직 SO에 있다면 .
===================================================== ====================
Python ≥ 3.5에서는 다음을 사용하십시오 pathlib.Path.mkdir
.
from pathlib import Path
Path("/my/directory").mkdir(parents=True, exist_ok=True)
이전 버전의 Python의 경우 작은 결함이있는 좋은 품질의 두 가지 답변을 보았습니다.
시도 하고 창조를 os.path.exists
고려 하십시오 os.makedirs
.
import os
if not os.path.exists(directory):
os.makedirs(directory)
의견과 다른 곳에서 언급했듯이 경쟁 조건이 있습니다. 디렉토리가 os.path.exists
와 os.makedirs
호출 사이에 생성 os.makedirs
되면는로 실패합니다 OSError
. 불행히도, OSError
불완전한 권한, 전체 디스크 등과 같은 다른 요인으로 인해 디렉토리를 만들지 못하는 것을 무시할 수 있기 때문에 담요 잡기 및 계속은 절대 쉽지 않습니다.
하나의 옵션은 OSError
포함 된 오류 코드 를 포착 하고 검사하는 것입니다 (Python의 OSError에서 정보를 가져 오는 플랫폼 간 방법이 있습니까)를 참조하십시오 .
import os, errno
try:
os.makedirs(directory)
except OSError as e:
if e.errno != errno.EEXIST:
raise
또는 두 번째가있을 수 있습니다 os.path.exists
있지만 다른 첫 번째 검사 후에 디렉토리를 만든 다음 두 번째 검사 전에 디렉토리를 제거했다고 가정합니다. 여전히 속일 수 있습니다.
응용 프로그램에 따라 동시 작업의 위험은 파일 권한과 같은 다른 요인으로 인한 위험보다 많거나 적을 수 있습니다. 개발자는 구현을 선택하기 전에 개발중인 특정 응용 프로그램과 예상 환경에 대해 더 많이 알아야합니다.
최신 버전의 Python FileExistsError
은 (3.3 이상에서) 노출 함으로써이 코드를 상당히 개선합니다 ...
try:
os.makedirs("path/to/directory")
except FileExistsError:
# directory already exists
pass
... 그리고 키워드 인수가 os.makedirs
호출exist_ok
되도록 허용 합니다 (3.2 이상).
os.makedirs("path/to/directory", exist_ok=True) # succeeds even if directory exists.
os.stat
디렉토리가 둘 다 존재하며 동시에 디렉토리인지 확인 하기 위해 대신 수행 할 수 있습니다 .