makedirs เพื่อสร้างไดเร็กทอรีแบบลำดับชั้นลึกแบบเรียกซ้ำใน Python

ธุรกิจ

เกิดข้อผิดพลาดเมื่อสร้างไดเร็กทอรีใหม่ด้วย os.mkdir() ในไดเร็กทอรีที่ไม่มีอยู่

os.mkdir()นี่เป็นวิธีการที่ใช้สร้างไดเร็กทอรี (โฟลเดอร์) ใน Python หากคุณพยายามสร้างไดเร็กทอรีใหม่ในไดเร็กทอรีที่ไม่มีอยู่จริง จะเกิดข้อผิดพลาดขึ้น(FileNotFoundError)

import os

os.mkdir('not_exist_dir/new_dir')
# FileNotFoundError

สร้างไดเร็กทอรีแบบเรียกซ้ำด้วย os.madeirs()

หากคุณใช้ os.makedirs() แทน os.mkdir() มันจะสร้างไดเร็กทอรีระดับกลาง ดังนั้นคุณจึงสามารถสร้างไดเร็กทอรีแบบลำดับชั้นแบบเรียกซ้ำได้

os.makedirs('not_exist_dir/new_dir')

ในกรณีของตัวอย่างนี้ มันจะสร้างทั้งหมดพร้อมกัน ไม่เป็นไรหากมีไดเร็กทอรีระดับกลางใหม่หลายไดเร็กทอรี

  • ไดเรกทอรีกลาง:not_exist_dir
  • ไดเรกทอรีสุดท้าย:new_dir

อย่างไรก็ตาม หากไดเร็กทอรีสิ้นสุดมีอยู่แล้ว ข้อผิดพลาดจะเกิดขึ้น(FileExistsError)

os.makedirs('exist_dir/exist_dir')
# FileExistsError

หากมีข้อโต้แย้งที่มีอยู่_ok

ตั้งแต่ Python 3.2 อาร์กิวเมนต์มีอยู่_ok ถูกเพิ่มเข้ามา และถ้ามีอยู่_ok=True จะไม่มีข้อผิดพลาดเกิดขึ้นแม้ว่าไดเร็กทอรีสิ้นสุดจะมีอยู่แล้ว ถ้าไม่มีไดเร็กทอรี end ไดเร็กทอรีใหม่จะถูกสร้างขึ้น และถ้าไดเร็กทอรี end จะไม่มีสิ่งใดเกิดขึ้น สะดวกเพราะคุณไม่จำเป็นต้องตรวจสอบการมีอยู่ของไดเร็กทอรีเทอร์มินัลล่วงหน้า

os.makedirs('exist_dir/exist_dir', exist_ok=True)

หากอาร์กิวเมนต์มีอยู่_ok หายไป

หากคุณมี Python เวอร์ชันเก่าและไม่มีอาร์กิวเมนต์ที่มีอยู่แล้วใน os.madeirs คุณสามารถใช้ os.path.exists เพื่อตรวจสอบว่ามีไดเร็กทอรีสิ้นสุดหรือไม่ จากนั้นสร้างไดเร็กทอรีใหม่ก็ต่อเมื่อไม่มี สิ้นสุดไดเรกทอรี

if not os.path.exists('exist_dir/exist_dir'):
    os.makedirs('exist_dir/exist_dir')
Copied title and URL