そこにない場合は、ディレクトリを作成することもできます。
ソース(SOにまだ存在する場合)。
================================================== ===================
Python≥3.5では、次を使用しますpathlib.Path.mkdir
:
from pathlib import Path
Path("/my/directory").mkdir(parents=True, exist_ok=True)
古いバージョンのPythonでは、品質に優れた2つの回答があり、それぞれに小さな欠陥があるので、私はそれについて説明します。
を試して、作成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
と継続は完全なものではありません。それは、不十分な許可、フルディスクなどのような他の要因によるディレクトリの作成の失敗を無視するためです。
1つのオプションは、をトラップしOSError
て埋め込みエラーコードを調べることです(「PythonのOSErrorから情報を取得するクロスプラットフォームの方法はありますか?」を参照)。
import os, errno
try:
os.makedirs(directory)
except OSError as e:
if e.errno != errno.EEXIST:
raise
または、2番目の 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
代わりに、ディレクトリが存在していて、同時にディレクトリであるかどうかを確認するために実行することもできます。