Anda mungkin juga ingin membuat direktori jika tidak ada di sana.
Sumber , jika masih ada di SO.
================================================== ===================
Pada Python ≥ 3.5, gunakan pathlib.Path.mkdir
:
from pathlib import Path
Path("/my/directory").mkdir(parents=True, exist_ok=True)
Untuk versi Python yang lebih lama, saya melihat dua jawaban dengan kualitas yang bagus, masing-masing dengan cacat kecil, jadi saya akan berikan pendapat saya:
Coba os.path.exists
, dan pertimbangkan os.makedirs
untuk penciptaan.
import os
if not os.path.exists(directory):
os.makedirs(directory)
Seperti disebutkan dalam komentar dan di tempat lain, ada kondisi balapan - jika direktori dibuat antara os.path.exists
dan os.makedirs
panggilan, os.makedirs
akan gagal dengan OSError
. Sayangnya, blanket-catching OSError
dan continue tidak mudah, karena akan mengabaikan kegagalan untuk membuat direktori karena faktor lain, seperti izin yang tidak mencukupi, disk penuh, dll.
Salah satu opsi adalah untuk menjebak OSError
dan memeriksa kode kesalahan tertanam (lihat Apakah ada cara lintas platform untuk mendapatkan informasi dari OSError Python ):
import os, errno
try:
os.makedirs(directory)
except OSError as e:
if e.errno != errno.EEXIST:
raise
Atau, mungkin ada yang kedua os.path.exists
, tapi anggap yang lain membuat direktori setelah cek pertama, lalu menghapusnya sebelum yang kedua - kita masih bisa tertipu.
Tergantung pada aplikasinya, bahaya operasi bersamaan mungkin lebih atau kurang dari bahaya yang ditimbulkan oleh faktor-faktor lain seperti izin file. Pengembang harus mengetahui lebih banyak tentang aplikasi tertentu yang sedang dikembangkan dan lingkungan yang diharapkan sebelum memilih suatu implementasi.
Versi modern Python meningkatkan sedikit kode ini, baik dengan mengekspos FileExistsError
(dalam 3.3 +) ...
try:
os.makedirs("path/to/directory")
except FileExistsError:
# directory already exists
pass
... dan dengan mengizinkan argumen kata kunci os.makedirs
dipanggilexist_ok
(dalam 3.2+).
os.makedirs("path/to/directory", exist_ok=True) # succeeds even if directory exists.
os.stat
sebaliknya, untuk melihat apakah direktori keduanya ada dan merupakan direktori pada saat yang sama.