目次
1. บทนำ
การใช้ Python ช่วยให้สามารถจัดการไฟล์และไดเรกทอรีได้อย่างง่ายดาย โดยเฉพาะอย่างยิ่ง การสร้างไดเรกทอรีเป็นหนึ่งในงานที่ทำบ่อยเพื่อการจัดระเบียบไฟล์ การสำรองข้อมูล และการสร้างอัตโนมัติ คู่มือนี้จะอธิบายอย่างละเอียดเกี่ยวกับวิธีการสร้างไดเรกทอรีโดยใช้โมดูลos
และโมดูล pathlib
นอกจากนี้ยังกล่าวถึงการสร้างไดเรกทอรีแบบเรียกซ้ำและการจัดการข้อผิดพลาด โดยมุ่งให้เนื้อหาเข้าใจง่ายสำหรับผู้เริ่มต้นใช้ Python2. การสร้างไดเรกทอรีด้วย 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 ช่วยให้สามารถเขียนโค้ดที่เรียบง่ายและอ่านเข้าใจได้มากขึ้น。 โปรดเลือกวิธีที่เหมาะสมตามการใช้งาน และจัดการไดเรกทอรีอย่างมีประสิทธิภาพ。