programing

파일 출력이 있는 디렉토리 자동 생성

itsource 2022. 10. 14. 21:56
반응형

파일 출력이 있는 디렉토리 자동 생성

파일을 만들고 싶다:

filename = "/foo/bar/baz.txt"

with open(filename, "w") as f:
    f.write("FOOBAR")

이렇게 하면IOError,부터/foo/bar는 존재하지 않습니다.

이러한 디렉토리를 자동으로 생성하는 가장 간단한 방법은 무엇입니까?제가 직접 전화할 필요가 있나요?os.path.exists그리고.os.mkdir(예: /foo, 그 다음에 /foo/bar) 모두요?

Python 3.2+에서는 OP가 요구하는 API를 사용하여 다음 작업을 우아하게 수행할 수 있습니다.


import os

filename = "/foo/bar/baz.txt"
os.makedirs(os.path.dirname(filename), exist_ok=True)
with open(filename, "w") as f:
    f.write("FOOBAR")


Pathlib 모듈(Python 3.4에서 도입)에는 대체 구문이 있습니다(David258 감사합니다).

from pathlib import Path
output_file = Path("/foo/bar/baz.txt")
output_file.parent.mkdir(exist_ok=True, parents=True)
output_file.write_text("FOOBAR")

오래된 비단뱀에는 덜 우아한 방법이 있다.

함수는 이렇게 합니다.다음을 시도해 보십시오.

import os
import errno

filename = "/foo/bar/baz.txt"
if not os.path.exists(os.path.dirname(filename)):
    try:
        os.makedirs(os.path.dirname(filename))
    except OSError as exc: # Guard against race condition
        if exc.errno != errno.EEXIST:
            raise

with open(filename, "w") as f:
    f.write("FOOBAR")

를 추가하는 이유try-exceptblock은 디렉토리가 생성된 경우를 처리하는 것입니다.os.path.exists및 그os.makedirs인종적 조건으로부터 우리를 보호하려고 전화했어


언급URL : https://stackoverflow.com/questions/12517451/automatically-creating-directories-with-file-output

반응형