programing

디렉토리(중간 디렉토리 포함)를 안전하게 작성하려면 어떻게 해야 합니까?

showcode 2023. 4. 15. 09:40
반응형

디렉토리(중간 디렉토리 포함)를 안전하게 작성하려면 어떻게 해야 합니까?

Python을 사용하여 파일을 쓰고 있는데 특정 경로에 배치해 주셨으면 합니다.경로가 존재하는지 안전하게 확인하려면 어떻게 해야 합니까?

즉, 폴더와 그 상위 폴더가 존재하는지 여부를 어떻게 확인할 수 있습니까?경로를 따라 누락된 폴더가 있는 경우 폴더를 만들려면 어떻게 해야 합니까?

Python © 3.5에서는 다음을 사용합니다.

from pathlib import Path
Path("/my/directory").mkdir(parents=True, exist_ok=True)

이전 버전의 Python의 경우 좋은 품질의 답변이 두 개 있는데 각각 작은 결함이 있습니다. 이에 대한 의견을 말씀드리겠습니다.

를 사용하여 작성을 검토합니다.

import os
if not os.path.exists(directory):
    os.makedirs(directory)

, 「 조건가 「경주 조건」, 「경주 조건」 에 작성되어 있는 경우는, 「 조건」이 있습니다os.path.existsos.makedirs >,os.makedirsOSError 캐치 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」OSError또한 권한 부족, 전체 디스크 등 다른 요인에 의한 디렉토리 생성 실패를 무시하기 때문에 오류가 발생하지 않습니다.

은 1개의 이더넷을 입니다.OSError내장된 오류 코드를 검사합니다(Python의 OSError에서 정보를 가져오는 크로스 플랫폼 방법이 있는지 참조).

import os, errno

try:
    os.makedirs(directory)
except OSError as e:
    if e.errno != errno.EEXIST:
        raise

두 수 .os.path.exists그러나 다른 사용자가 첫 번째 체크 후에 디렉토리를 만들고 두 번째 체크 전에 디렉토리를 삭제했다고 가정해도 속지 않을 수 없습니다.

애플리케이션에 따라서는, 동시 조작의 위험성은, 파일 허가등의 다른 요인에 의해서 발생하는 위험성보다 다소 낮아질 수 있습니다.개발자는 구현을 선택하기 전에 개발 중인 특정 애플리케이션과 예상되는 환경에 대해 더 잘 알아야 합니다.

최신 버전의 Python은 (3.3+에서) 노출함으로써 이 코드를 상당히 개선합니다.

try:
    os.makedirs("path/to/directory")
except FileExistsError:
    # directory already exists
    pass

키워드 인수의 호출을 허가합니다(3.2+).

os.makedirs("path/to/directory", exist_ok=True)  # succeeds even if directory exists.

Python 3.5+:

import pathlib
pathlib.Path('/my/directory').mkdir(parents=True, exist_ok=True) 

pathlib.Path.mkdir 위에서 사용한 것과 같이 디렉토리가 반복적으로 생성되며 디렉토리가 이미 존재하는 경우 예외가 발생하지 않습니다.부모를 생성할 필요가 없거나 부모를 생성할 필요가 없는 경우parents★★★★★★ 。

Python 3.2+:

「」를 사용합니다.pathlib:

경우 현재 중인 설치 을 설치합니다.pathlibbackport named. 유지보수가 필요 없는 이전 backport name은 설치하지 마십시오.다음으로 위의 Python 3.5+ 섹션을 참조하여 동일하게 사용하십시오.

Python 3.4는 Python 3.4로 되어 Python 3.4는 Python 3.4로 되어 .pathlib, 그것은 유용성이 결여되어 있다.exist_ok보다 새롭고 뛰어난 입니다.mkdir이치노

「」를 사용합니다.os:

import os
os.makedirs(path, exist_ok=True)

os.makedirs 위에서 사용한 것과 같이 디렉토리가 반복적으로 생성되며 디렉토리가 이미 존재하는 경우 예외가 발생하지 않습니다.선택사항이 있습니다.exist_ok 3.2+인 Python 3.2+를 하는 경우에만 :False2.x 27까지 존재하지 따라서 Python 2.7과 같이 수동 예외 처리가 필요하지 않습니다.

Python 2.7+:

「」를 사용합니다.pathlib:

경우 현재 중인 설치 을 설치합니다.pathlibbackport named. 유지보수가 필요 없는 이전 backport name은 설치하지 마십시오.다음으로 위의 Python 3.5+ 섹션을 참조하여 동일하게 사용하십시오.

「」를 사용합니다.os:

import os
try: 
    os.makedirs(path)
except OSError:
    if not os.path.isdir(path):
        raise

순진한 솔루션이 먼저 사용되고 그 뒤에 이어지는 경우도 있지만 위의 솔루션은 두 작업의 순서를 반대로 합니다.이 경우 디렉토리 작성의 중복 시도와 관련된 공통 레이스 조건을 방지하고 디렉토리에서 파일을 모호하게 하지 않습니다.

하여 " " " 를 사용합니다.errno가 한정되어 있다OSError: [Errno 17] File exists discriptions.errno.EEXIST는, 파일과 디렉토리의 양쪽 모두에 대해서 작성됩니다.디렉토리가 존재하는지 확인하는 것만으로 신뢰성이 높아집니다.

다른 방법:

mkpath 는 네스트된 디렉토리를 만듭니다.디렉토리가 이미 존재하는 경우는, 아무것도 행해지지 않습니다.이것은 Python 2와 3 모두에서 동작합니다.그러나 이 기능은 더 이상 사용되지 않으며 Python 3.12에서 삭제될 예정입니다.

import distutils.dir_util
distutils.dir_util.mkpath(path)

Bug 10948에 따르면 이 대안의 심각한 제한은 주어진 경로에 대해 python 프로세스당 한 번만 작동한다는 것입니다.즉, 디렉토리를 작성하기 위해 사용하는 경우 Python 내부 또는 외부에서 디렉토리를 삭제한 후mkpath「」를 합니다.mkpath는, 이전에 디렉토리를 작성한 무효인 캐시 정보를 사일런트하게 사용할 뿐, 실제로는 디렉토리를 다시 작성하지 않습니다.그에 반해서,os.makedirs그런 캐시에 의존하지 않습니다.이 제한은 응용 프로그램에 따라서는 문제가 없을 수 있습니다.


디렉토리 모드에 대해서는, 신경이 쓰이는 경우는, 문서를 참조해 주세요.

try except 및 errno 모듈의 올바른 오류 코드를 사용하면 레이스 조건이 해소되고 크로스 플랫폼이 됩니다.

import os
import errno

def make_sure_path_exists(path):
    try:
        os.makedirs(path)
    except OSError as exception:
        if exception.errno != errno.EEXIST:
            raise

, 이미 는 무시됩니다.한편, 그 외의 에러는 보고됩니다.를 들어,dir 'a'를, "dir 'a'는 "", "dir 'a'는 "a"로 표시됩니다.OSError 있습니다.errno.EACCES(13).

Python 3.5부터는,exist_ok 삭제:

from pathlib import Path
path = Path('/my/directory/filename.txt')
path.parent.mkdir(parents=True, exist_ok=True) 
# path.parent ~ os.path.dirname(path)

그러면 디렉토리가 반복적으로 생성되고 디렉토리가 이미 존재하는 경우 예외가 발생하지 않습니다.

(마치,exist_ok 3를 들어 python 3.2에서 시작하는 플래그입니다.os.makedirs(path, exist_ok=True))


이때, 은 언급되지 않았습니다: 주 : 이 른 、 른 、 른 、 른 、 note 、 note 、 note 、 note 、 note 、 note note 。exist_ok

는 으로 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★os.path.isdir()os.path.exists().

>>> os.path.exists('/tmp/dirname')
True
>>> os.path.exists('/tmp/dirname/filename.etc')
True
>>> os.path.isdir('/tmp/dirname/filename.etc')
False
>>> os.path.isdir('/tmp/fakedirname')
False

다음과 같은 경우:

>>> directory = raw_input(":: ")

그리고 바보같은 사용자 입력:

:: /tmp/dirname/filename.etc

.라는 이름의 디렉토리가 생성됩니다.filename.etc를 ""에 때"os.makedirs()로 로 테스트하면os.path.exists().

체크: (완전한 경로가 존재하는지 확인합니다.)
존재할 이 있는 하려면 , 을 참조해 .OSError 경우)exist_okFalse (디폴트), (디폴트),OSError는 타겟 디렉토리가 이미 존재하는 경우 발생합니다).

import os
try:
    os.makedirs('./path/to/somewhere')
except OSError:
    pass

기능을 시험해 보다

if not os.path.exists(dir):
    os.mkdir(dir)

이 상황에 대한 구체적인 통찰력

특정 경로에 특정 파일을 지정하고 파일 경로에서 디렉토리를 가져옵니다.그런 다음 디렉토리가 있는지 확인한 후 읽기 위해 파일을 열려고 합니다.이 코드에 코멘트하려면:

filename = "/my/directory/filename.txt"
dir = os.path.dirname(filename)

함수인 '비고함수'를 않도록 .dirfilepath 아마 (아마도)fullfilepath is is than than than than than than than than than than is is is is is is보다 더 좋은 의미명일 것이다.filename그래서 이렇게 쓰는 게 좋을 것 같아요

import os
filepath = '/my/directory/filename.txt'
directory = os.path.dirname(filepath)

최종 목표는 처음에는 쓰기용으로 이 파일을 여는 것이지만, 기본적으로는 다음과 같이 (코드에 따라) 이 목표에 접근하여 파일을 읽을 수 있도록 여는 것입니다.

if not os.path.exists(directory):
    os.makedirs(directory)
f = file(filename)

판독을 위해 열린 것으로 가정합니다.

왜 거기에 있고 읽을 수 있는 파일을 위한 디렉토리를 만드십니까?

파일을 열어보세요.

with open(filepath) as my_file:
    do_stuff(my_file)

또는 「 」라고 가 표시됩니다.IOError 번호: 에러 번호를 합니다.errno.ENOENT는 플랫폼에 관계없이 올바른 에러 번호를 가리킵니다.예를 들어 다음과 같이 원하는 경우 잡을 수 있습니다.

import errno
try:
    with open(filepath) as my_file:
        do_stuff(my_file)
except IOError as error:
    if error.errno == errno.ENOENT:
        print 'ignoring error because directory or file is not there'
    else:
        raise

우리가 글을 쓰기 위해 문을 연다고 가정하면

아마 이게 네가 원하는 것일 거야.

이 경우, 우리는 어떤 인종 조건에도 직면하지 않을 것입니다.그냥 쓰세요, '아까', '아까', '아까'로요.w "모드a열기에는 입니다.파일을 열 때 컨텍스트 매니저를 사용하는 것도 Python의 베스트 프랙티스입니다.

import os
if not os.path.exists(directory):
    os.makedirs(directory)
with open(filepath, 'w') as my_file:
    do_stuff(my_file)

그러나 모든 데이터를 동일한 디렉토리에 저장하려고 하는 여러 Python 프로세스가 있다고 가정해 보십시오.그러면 디렉토리 작성에 대해 경합이 발생할 수 있습니다. 때는 이 가장 .makedirs테스트 예외 블록을 호출합니다.

import os
import errno
if not os.path.exists(directory):
    try:
        os.makedirs(directory)
    except OSError as error:
        if error.errno != errno.EEXIST:
            raise
with open(filepath, 'w') as my_file:
    do_stuff(my_file)

저는 다음 사항을 적어두었습니다.하지만 그것은 완전히 완벽하지는 않다.

import os

dirname = 'create/me'

try:
    os.makedirs(dirname)
except OSError:
    if os.path.exists(dirname):
        # We are nearly safe
        pass
    else:
        # There was an error on creation, so make sure we know about it
        raise

이미 말씀드렸듯이 디렉토리 작성에 실패할 가능성이 있고 그 기간 동안 다른 프로세스가 디렉토리를 작성할 수 있기 때문에 이 방법은 완벽하지 않습니다.

디렉토리가 있는지 확인하고 필요에 따라 작성하시겠습니까?

이것에 대한 직접적인 해답은, 다른 유저나 프로세스가 디렉토리를 망가뜨리는 것을 예상하지 않는 단순한 상황을 가정하는 것입니다.

if not os.path.exists(d):
    os.makedirs(d)

또는 디렉토리를 레이스 조건(경로가 존재하는 것을 확인한 후 다른 무언가가 이미 디렉토리를 만든 경우)에 따라 다음을 수행합니다.

import errno
try:
    os.makedirs(d)
except OSError as exception:
    if exception.errno != errno.EEXIST:
        raise

다만, 보다 좋은 방법은, 를 개입시켜 일시 디렉토리를 사용하는 것으로, 자원의 경합 문제를 회피하는 것입니다.

import tempfile

d = tempfile.mkdtemp()

다음은 온라인 문서의 주요 내용입니다.

mkdtemp(suffix='', prefix='tmp', dir=None)
    User-callable function to create and return a unique temporary
    directory.  The return value is the pathname of the directory.

    The directory is readable, writable, and searchable only by the
    creating user.

    Caller is responsible for deleting the directory when done with it.

3.: Python 3.5:pathlib.Pathexist_ok

것이 등장했습니다Path 오브젝트(3.4그 중 로 사용하는 것입니다.mkdir.

(문맥상 스크립트를 사용하여 주간 담당자를 추적하고 있습니다.다음은 동일한 데이터에 대해 하루에 두 번 이상 스택 오버플로를 클릭하지 않도록 하는 스크립트의 관련 코드 부분입니다.)

먼저 관련 Import:

from pathlib import Path
import tempfile

할 없다os.path.join 이제 - 경로 됩니다./:

directory = Path(tempfile.gettempdir()) / 'sodata'

존재하는지 합니다. - 는 존재하는지 확인합니다. - 러면 then then then then then then then then then then then then then then then then then then then 。exist_ok 3.5 Python 3.5에 됩니다.

directory.mkdir(exist_ok=True)

문서의 관련 부분은 다음과 같습니다.

ifexist_ok 말이다.FileExistsError).POSIX mkdir -p명령) 단, 마지막 경로 컴포넌트가 기존 비디렉토리 파일이 아닌 경우에만 해당됩니다.

여기 스크립트가 조금 더 있습니다.저의 경우, 레이스 조건의 대상이 아닙니다.디렉토리(또는 격납 파일)가 존재할 것으로 예상되는 프로세스는 1개뿐이며, 디렉토리를 삭제하려고 하는 프로세스는 없습니다.

todays_file = directory / str(datetime.datetime.utcnow().date())
if todays_file.exists():
    logger.info("todays_file exists: " + str(todays_file))
    df = pd.read_json(str(todays_file))

Pathstr를 하는 다른 str경로에서 사용할 수 있습니다.

아마도 판다는 추상적인 기본 클래스의 예를 받아들이도록 업데이트 되어야 할 것이다.os.PathLike.

가장 안전한 방법은 다음과 같습니다. 없으면 생성하고 없으면 건너뜁니다.

from pathlib import Path
Path("path/with/childs/.../").mkdir(parents=True, exist_ok=True)

python에서 이를 수행하는 가장 좋은 방법

#Devil
import os
directory = "./out_dir/subdir1/subdir2"
if not os.path.exists(directory):
    os.makedirs(directory)

Python 3.4에서는 새로운 모듈도 사용할 수 있습니다.

from pathlib import Path
path = Path("/my/directory/filename.txt")
try:
    if not path.parent.exists():
        path.parent.mkdir(parents=True)
except OSError:
    # handle error; you can also catch specific errors like
    # FileExistsError and so on.

Python3에서는os.makedirs는, 「」을 서포트하고 있습니다.exist_ok은 . 입니다.False,을 뜻하는 ,, 즉OSError대상 디렉토리가 이미 존재하는 경우 발생합니다.「」를 설정해 .exist_ok로로 합니다.True,OSError(디렉토리가 존재합니다)는 무시되고 디렉토리는 작성되지 않습니다.

os.makedirs(path,exist_ok=True)

Python2에서는os.makedirs는 설정을 exist_ok헤이키토이보넨의 답변에서는 다음과 같은 어프로치를 사용할 수 있습니다.

import os
import errno

def make_sure_path_exists(path):
    try:
        os.makedirs(path)
    except OSError as exception:
        if exception.errno != errno.EEXIST:
            raise

원라이너 솔루션의 경우 다음을 사용할 수 있습니다.

from IPython.utils.path import ensure_dir_exists
ensure_dir_exists(dir)

매뉴얼에서 다음 항목을 참조하십시오.디렉토리가 존재하는 것을 확인합니다. 존재하지 않는 경우 생성하려고 시도하고 다른 프로세스가 동일한 작업을 수행하는 경우 경쟁 조건으로부터 보호합니다.

IPython은 표준 라이브러리의 일부가 아닌 확장 패키지입니다.

관련 Python 문서에서는 EAFP 코딩 스타일의 사용을 제안하고 있습니다(허가보다 용서를 구하는 것이 쉽습니다).즉, 코드가

try:
    os.makedirs(path)
except OSError as exception:
    if exception.errno != errno.EEXIST:
        raise
    else:
        print "\nBE CAREFUL! Directory %s already exists." % path

대안보다 낫다

if not os.path.exists(path):
    os.makedirs(path)
else:
    print "\nBE CAREFUL! Directory %s already exists." % path

이 문서는 이 질문에서 논의된 레이스 조건 때문에 정확하게 이것을 제시하고 있다.또, 여기서 말하는 것처럼, OS 의 2배가 아닌 1 회에 문의하는 것이 퍼포먼스상의 이점이 있습니다.마지막으로, 잠재적으로, 두 번째 코드에 유리한 논거는 (개발자가 애플리케이션이 실행되고 있는 환경을 알고 있을 때) 프로그램이 자신(및 같은 프로그램의 다른 인스턴스)을 위한 개인 환경을 설정한 특별한 경우에만 주장될 수 있다.

이 경우에도 이는 잘못된 관행으로 오랫동안 디버깅을 하지 못할 수 있습니다.예를 들어, 디렉토리에 대한 권한을 설정했다고 해서 권한 부여가 목적에 맞게 적절하게 설정되어 있다는 인상을 남기지 않아야 합니다.부모 디렉토리는 다른 권한과 함께 마운트될 수 있습니다.일반적으로 프로그램은 항상 올바르게 작동해야 하며 프로그래머는 하나의 특정 환경을 예상해서는 안 됩니다.

Python에서 디렉토리 작업을 할 때 발생하는 몇 가지 오류와 오류로 인해 곤혹스러웠던 끝에 이 Q/A를 발견했습니다.Python 3(Arch Linux x86_64 시스템의 Anaconda 가상 환경의 v.3.5)에서 일하고 있습니다.

다음의 디렉토리 구조를 고려해 주세요.

└── output/         ## dir
   ├── corpus       ## file
   ├── corpus2/     ## dir
   └── subdir/      ## dir

다음은 저의 실험/노트를 정리한 것입니다.

# ----------------------------------------------------------------------------
# [1] https://stackoverflow.com/questions/273192/how-can-i-create-a-directory-if-it-does-not-exist

import pathlib

""" Notes:
        1.  Include a trailing slash at the end of the directory path
            ("Method 1," below).
        2.  If a subdirectory in your intended path matches an existing file
            with same name, you will get the following error:
            "NotADirectoryError: [Errno 20] Not a directory:" ...
"""
# Uncomment and try each of these "out_dir" paths, singly:

# ----------------------------------------------------------------------------
# METHOD 1:
# Re-running does not overwrite existing directories and files; no errors.

# out_dir = 'output/corpus3'                ## no error but no dir created (missing tailing /)
# out_dir = 'output/corpus3/'               ## works
# out_dir = 'output/corpus3/doc1'           ## no error but no dir created (missing tailing /)
# out_dir = 'output/corpus3/doc1/'          ## works
# out_dir = 'output/corpus3/doc1/doc.txt'   ## no error but no file created (os.makedirs creates dir, not files!  ;-)
# out_dir = 'output/corpus2/tfidf/'         ## fails with "Errno 20" (existing file named "corpus2")
# out_dir = 'output/corpus3/tfidf/'         ## works
# out_dir = 'output/corpus3/a/b/c/d/'       ## works

# [2] https://docs.python.org/3/library/os.html#os.makedirs

# Uncomment these to run "Method 1":

#directory = os.path.dirname(out_dir)
#os.makedirs(directory, mode=0o777, exist_ok=True)

# ----------------------------------------------------------------------------
# METHOD 2:
# Re-running does not overwrite existing directories and files; no errors.

# out_dir = 'output/corpus3'                ## works
# out_dir = 'output/corpus3/'               ## works
# out_dir = 'output/corpus3/doc1'           ## works
# out_dir = 'output/corpus3/doc1/'          ## works
# out_dir = 'output/corpus3/doc1/doc.txt'   ## no error but creates a .../doc.txt./ dir
# out_dir = 'output/corpus2/tfidf/'         ## fails with "Errno 20" (existing file named "corpus2")
# out_dir = 'output/corpus3/tfidf/'         ## works
# out_dir = 'output/corpus3/a/b/c/d/'       ## works

# Uncomment these to run "Method 2":

#import os, errno
#try:
#       os.makedirs(out_dir)
#except OSError as e:
#       if e.errno != errno.EEXIST:
#               raise
# ----------------------------------------------------------------------------

결론: 제 생각에는 "Method 2"가 더 강력합니다.

[1] 네스트된 디렉토리를 안전하게 작성하려면 어떻게 해야 합니까?

[2] https://docs.python.org/3/library/os.html#os.makedirs

사용할 수 있습니다.

# Create a directory and any missing ancestor directories. 
# If the directory already exists, do nothing.

from distutils.dir_util import mkpath
mkpath("test")    

상위 디렉토리도 생성됩니다.

Python 2와 3에서 동작합니다.

가변 경로에 파일을 쓰는 경우 파일 경로에 파일을 사용하여 상위 디렉토리가 작성되었는지 확인할 수 있습니다.

from pathlib import Path

path_to_file = Path("zero/or/more/directories/file.ext")
parent_directory_of_file = path_to_file.parent
parent_directory_of_file.mkdir(parents=True, exist_ok=True)

, 하다, 하다, 하다, 하다, 하다.path_to_filefile.ext(일부러)

pathlib 참조.PurePath.parentpathlib.Path.mkdir.

명령어를 중인 하지 않는 입니까?mkdir-p 23.6 python 2.7에서 동작합니다.

from subprocess import call
call(['mkdir', '-p', 'path1/path2/path3'])

대부분의 시스템에서 효과가 있을 것입니다.

휴대성이 중요하지 않은 경우(도커 사용 등) 솔루션은 깨끗한 2라인입니다.디렉토리의 유무를 확인하기 위해서, 로직을 추가할 필요도 없습니다.마지막으로 부작용 없이 재주행하는 것이 안전합니다.

오류 처리가 필요한 경우:

from subprocess import check_call
try:
    check_call(['mkdir', '-p', 'path1/path2/path3'])
except:
    handle...

디렉토리를 작성하기 전에, 풀 패스를 설정할 필요가 있습니다.

import os,sys,inspect
import pathlib

currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
your_folder = currentdir + "/" + "your_folder"

if not os.path.exists(your_folder):
   pathlib.Path(your_folder).mkdir(parents=True, exist_ok=True)

이것은 나에게도 효과가 있고, 당신에게도 효과가 있기를 바랍니다.

나는 헤이키 토이보넨과 A-B-B의 답변을 보고 이 변형을 생각했다.

import os
import errno

def make_sure_path_exists(path):
    try:
        os.makedirs(path)
    except OSError as exception:
        if exception.errno != errno.EEXIST or not os.path.isdir(path):
            raise

용 i i i i를 쓴다.os.path.exists()이것은 디렉토리가 존재하는지 확인하고 존재하지 않는 경우 디렉토리를 생성하고 존재하는 경우 삭제할 수 있는 Python 3 스크립트입니다(필요한 경우).

유저에게 디렉토리의 입력을 요구해, 간단하게 변경할 수 있습니다.

이 명령어 체크 및 생성 dir 사용

 if not os.path.isdir(test_img_dir):
     os.mkdir(test_img_dir)

를 합니다.create_dir()프로그램/프로젝트의 시작점에 있습니다.

import os

def create_dir(directory):
    if not os.path.exists(directory):
        print('Creating Directory '+directory)
        os.makedirs(directory)

create_dir('Project directory')

다음 사항을 고려할 경우:

os.path.isdir('/tmp/dirname')

디렉토리(패스)가 존재하고 디렉토리임을 나타냅니다.그래서 나는 이런 식으로 내가 원하는 것을 할 수 있다.파일이 아닌 폴더이며 존재하는 것을 확인할 수 있습니다.

하시면 됩니다.os.listdir경우: 우::

import os
if 'dirName' in os.listdir('parentFolderPath')
    print('Directory Exists')

이것은 질문에 정확히 답하지 않을 수 있습니다.그러나 모든 내용을 하나의 명령어로 볼 때, 당신의 진짜 의도는 파일과 상위 디렉토리를 만드는 것이라고 생각합니다.

은 「 」로 할 수 .fastcore pathlib:path.mk_write(data)

from fastcore.utils import Path
Path('/dir/to/file.txt').mk_write('Hello World')

Fastcore 문서 상세보기

언급URL : https://stackoverflow.com/questions/273192/how-can-i-safely-create-a-directory-possibly-including-intermediate-directories

반응형