Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mencipta Direktori dan Direktori Induk Mereka dalam Python?

Bagaimanakah Saya Boleh Mencipta Direktori dan Direktori Induk Mereka dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-12-15 12:29:19456semak imbas

How Can I Create Directories and Their Parent Directories in Python?

Mencipta Direktori dan Ibu Bapa Mereka dengan Python

Dalam bidang sistem fail, selalunya perlu untuk mencipta direktori, kedua-duanya pada laluan yang ditentukan dan mana-mana direktori induk yang hilang di sepanjang jalan. Ini meniru kefungsian perintah mkdir -p Bash.

Modern Python (≥ 3.5):

Modul pathlib Python menyediakan cara yang mudah untuk mengendalikan perkara ini:

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

Sawa Tua Versi:

Menggunakan modul os:

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

Pendekatan ini mempunyai potensi keadaan perlumbaan, seperti yang dinyatakan oleh ulasan. Untuk menangani perkara ini, anda boleh menggunakan os.path.exists kedua memanggil atau memerangkap OSError dan memeriksa kod ralat terbenam:

import os, errno

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

Walau bagaimanapun, ini memperkenalkan risiko kehilangan ralat lain.

Versi Python yang Diperbaiki:

Python 3.3 memperkenalkan FileExistsError, yang memudahkan pengendalian ralat:

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

Python 3.2 juga menambahkan argumen exist_ok pada os.makedirs:

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Direktori dan Direktori Induk Mereka dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn