สร้างไดเรกทอรีใน Python ง่ายๆ: ต่างและการใช้ mkdir/makedirs

1. บทนำ

การใช้ Python ช่วยให้สามารถจัดการไฟล์และไดเรกทอรีได้อย่างง่ายดาย โดยเฉพาะอย่างยิ่ง การสร้างไดเรกทอรีเป็นหนึ่งในงานที่ทำบ่อยเพื่อการจัดระเบียบไฟล์ การสำรองข้อมูล และการสร้างอัตโนมัติ คู่มือนี้จะอธิบายอย่างละเอียดเกี่ยวกับวิธีการสร้างไดเรกทอรีโดยใช้โมดูล os และโมดูล pathlib นอกจากนี้ยังกล่าวถึงการสร้างไดเรกทอรีแบบเรียกซ้ำและการจัดการข้อผิดพลาด โดยมุ่งให้เนื้อหาเข้าใจง่ายสำหรับผู้เริ่มต้นใช้ Python

2. การสร้างไดเรกทอรีด้วย os.mkdir()

วิธีใช้งานพื้นฐาน

os.mkdir() เป็นวิธีพื้นฐานในการสร้างไดเรกทอรีหนึ่งรายการในพาธที่ระบุ อย่างไรก็ตาม ฟังก์ชันนี้มีข้อจำกัด หากไดเรกทอรีแม่ไม่มีอยู่จะทำให้เกิดข้อผิดพลาด ตัวอย่างเช่น โค้ดต่อไปนี้เป็นวิธีสร้างไดเรกทอรีแบบง่าย
import os

# ระบุพาธของไดเรกทอรีที่จะสร้าง
dir_path = './new_directory'

# สร้างไดเรกทอรี
os.mkdir(dir_path)
ในโค้ดนี้ จะมีการสร้างไดเรกทอรีในพาธที่ระบุ แต่หากมีไดเรกทอรีชื่อเดียวกันอยู่แล้ว จะเกิด FileExistsError นี่คือจุดที่ต้องระวังของ os.mkdir()

การจัดการข้อผิดพลาด

สามารถป้องกันข้อผิดพลาดได้โดยตรวจสอบก่อนว่าไดเรกทอรีมีอยู่แล้วหรือไม่ แล้วค่อยสร้าง โค้ดต่อไปนี้เป็นตัวอย่างที่ชัดเจน
import os

# ระบุพาธของไดเรกทอรีที่จะสร้าง
dir_path = './new_directory'

# ตรวจสอบว่าไดเรกทอรีมีอยู่หรือไม่
if not os.path.exists(dir_path):
    os.mkdir(dir_path)
else:
    print(f"ไดเรกทอรี '{dir_path}' มีอยู่แล้ว")
วิธีนี้ช่วยหลีกเลี่ยงข้อผิดพลาดเมื่อพยายามสร้างไดเรกทอรีที่มีอยู่แล้วโดยไม่ตั้งใจ
年収訴求

3. การสร้างไดเรกทอรีแบบเรียกซ้ำโดยใช้ os.makedirs()

การสร้างไดเรกทอรีแบบเรียกซ้ำ

os.makedirs() สามารถถือได้ว่าเป็นฟังก์ชันที่มีความสามารถครอบคลุมกว่า os.mkdir() เนื่องจากสามารถสร้างไดเรกทอรีหลายชั้นได้ในครั้งเดียว จึงสามารถสร้างไดเรกทอรีระดับกลางไปพร้อมกันได้ แม้ว่าไดเรกทอรีแม่จะยังไม่มีอยู่
import os

# พาธที่มีไดเรกทอรีระดับกลางอยู่ด้วย
dir_path = './parent_directory/sub_directory'

# สร้างไดเรกทอรีแบบเรียกซ้ำ
os.makedirs(dir_path)
ในตัวอย่างนี้ จะมีการสร้าง parent_directory และ sub_directory ที่อยู่ภายในขึ้นพร้อมกันในครั้งเดียว แม้ไดเรกทอรีระดับกลางจะยังไม่มีอยู่ ก็สามารถสร้างไดเรกทอรีทั้งหมดได้โดยไม่เกิดข้อผิดพลาด ซึ่งแสดงให้เห็นถึงความสะดวกในการใช้งาน

การจัดการข้อผิดพลาดโดยใช้ exist_ok=True

os.makedirs() มีออปชัน exist_ok ซึ่งช่วยให้สามารถดำเนินการต่อไปได้โดยไม่เกิดข้อผิดพลาด แม้ไดเรกทอรีจะมีอยู่แล้ว
import os

dir_path = './parent_directory/sub_directory'

# ไม่ให้เกิดข้อผิดพลาดแม้มีไดเรกทอรีอยู่แล้ว
os.makedirs(dir_path, exist_ok=True)
เมื่อใช้วิธีนี้ จะช่วยตัดขั้นตอนการตรวจสอบล่วงหน้าว่าไดเรกทอรีมีอยู่หรือไม่ ทำให้การจัดการข้อผิดพลาดง่ายขึ้น

4. การสร้างไดเรกทอรีด้วยโมดูล pathlib

การสร้างไดเรกทอรีโดยใช้อ็อบเจ็กต์ Path

โมดูล pathlib เป็นโมดูลสำหรับจัดการพาธของระบบไฟล์ที่ใช้งานได้ตั้งแต่ Python 3.4 เป็นต้นไป การใช้อ็อบเจ็กต์ Path() ช่วยเพิ่มความอ่านง่ายของโค้ด
from pathlib import Path

# ระบุพาธของไดเรกทอรี
dir_path = Path('./new_directory')

# สร้างไดเรกทอรี
dir_path.mkdir()
ข้อดีของ pathlib คือสามารถจัดการพาธแบบเชิงวัตถุได้ ช่วยให้โค้ดเข้าใจง่ายและเป็นธรรมชาติมากขึ้น

การสร้างไดเรกทอรีแบบรีเคอร์ซีฟและการจัดการข้อผิดพลาด

การสร้างไดเรกทอรีแบบรีเคอร์ซีฟด้วย pathlib ก็ทำได้ง่าย เพียงระบุออปชันเท่านั้น
from pathlib import Path

# พาธที่มีไดเรกทอรีระดับกลาง
dir_path = Path('./parent_directory/sub_directory')

# สร้างพร้อมไดเรกทอรีระดับกลางทั้งหมด
dir_path.mkdir(parents=True, exist_ok=True)
ในโค้ดนี้จะสร้างไดเรกทอรีหลายระดับที่มีไดเรกทอรีระดับกลางพร้อมกันในครั้งเดียว และหากมีไดเรกทอรีอยู่แล้วก็จะไม่เกิดข้อผิดพลาด
年収訴求

5. การตรวจสอบการมีอยู่ของไดเรกทอรีและการจัดการข้อผิดพลาด

การตรวจสอบว่าไดเรกทอรีมีอยู่แล้วหรือไม่เป็นพื้นฐานของการจัดการข้อผิดพลาด os และ pathlib ช่วยให้คุณตรวจสอบการมีอยู่ของไดเรกทอรี และจัดการกับไดเรกทอรีได้อย่างปลอดภัย

วิธีตรวจสอบโดยใช้โมดูล os

import os

dir_path = './new_directory'

if os.path.exists(dir_path):
    print(f"ไดเรกทอรี '{dir_path}' มีอยู่แล้ว")
else:
    print(f"ไดเรกทอรี '{dir_path}' ไม่มีอยู่")

วิธีตรวจสอบโดยใช้ pathlib

from pathlib import Path

dir_path = Path('./new_directory')

if dir_path.exists():
    print(f"ไดเรกทอรี '{dir_path}' มีอยู่แล้ว")
else:
    print(f"ไดเรกทอรี '{dir_path}' ไม่มีอยู่")

6. สรุป

ในบทความนี้ เราได้อธิบายอย่างละเอียดเกี่ยวกับวิธีการต่างๆ ในการสร้างไดเรกทอรีด้วย Python.os.mkdir() และ os.makedirs() เราได้ทำความเข้าใจความแตกต่างระหว่างทั้งสอง พร้อมทั้งเรียนรู้การสร้างไดเรกทอรีแบบเรียกซ้ำ (recursive) และการจัดการข้อผิดพลาดด้วย。นอกจากนี้ การใช้ประโยชน์จาก pathlib ซึ่งเป็นมอดูลมาตรฐานใหม่ของ Python ช่วยให้สามารถเขียนโค้ดที่เรียบง่ายและอ่านเข้าใจได้มากขึ้น。 โปรดเลือกวิธีที่เหมาะสมตามการใช้งาน และจัดการไดเรกทอรีอย่างมีประสิทธิภาพ。