การสร้างไดเรกทอรี (Directory) ใน Python: คู่มือ How-To
เมธอด os.mkdir() ใน Python สร้างไดเรกทอรีว่างบนระบบไฟล์ คุณไม่สามารถใช้เมธอดนี้สร้างโฟลเดอร์ในโฟลเดอร์ที่ไม่มีอยู่ได้ เมธอด os.makedirs() สร้างไดเรกทอรีแบบเรียกซ้ำ (recursively)
ไฟล์ช่วยจัดเก็บข้อมูลนอกโปรแกรมที่อ้างอิงได้ในอนาคต เมื่อทำงานกับไฟล์ คุณอาจตัดสินใจสร้างไดเรกทอรีใหม่ที่ไฟล์ควรจัดเก็บ
นี่คือที่มาของโมดูล os ใน Python โมดูล os มีสองเมธอดคือ os.mkdir() และ os.makedirs() ใช้สร้างไดเรกทอรีใน Python
บทช่วยสอนนี้จะสำรวจวิธีสร้างไดเรกทอรีใน Python ด้วย os.mkdir() และ os.makedirs() เราจะใช้ตัวอย่างเล็กๆ แสดงการทำงานของเมธอดเหล่านี้
Python os Refresher
ก่อนทำงานกับไฟล์ใน Python คุณต้องนำเข้าโมดูล os โมดูล os เป็น built-in ของ Python มีเมธอดหลายตัวใช้ interface กับระบบปฏิบัติการ (OS) ของคอมพิวเตอร์
ในกรณีนี้ เราสนใจเมธอดระบบไฟล์ของโมดูล os ซึ่งใช้ทำงานกับไฟล์ เราสามารถใช้คำสั่ง import ของ Python นำเข้า os เข้าโปรแกรม:
import os
Python Create Directory
เมธอด os.mkdir() ใช้สร้างไดเรกทอรีเดี่ยว เช่น หากเราสร้างโปรแกรมที่ต้องการโฟลเดอร์ใหม่เก็บผลลัพธ์ เราจะใช้ os.mkdir()
ไวยากรณ์ os.mkdir():
os.mkdir(path, access)
ฟังก์ชัน os.mkdir() รับสองพารามิเตอร์:
- path: เส้นทางไฟล์ที่ต้องการสร้างไดเรกทอรี (จำเป็น)
- access: สิทธิ์การเข้าถึงที่ต้องการให้ไดเรกทอรี (ตัวเลือก)
ตัวอย่าง Python os.mkdir()
มาสำรวจตัวอย่างแสดงการใช้ os.mkdir()
สมมติเราสร้างโปรแกรมวิเคราะห์คะแนนสอบคณิตศาสตร์ของนักเรียน โปรแกรมจัดเก็บว่าแต่ละนักเรียนสอบผ่านหรือไม่
เริ่มต้น เราต้องการสร้างไดเรกทอรีที่จะจัดเก็บข้อมูล เพื่อแยกข้อมูลจากส่วนอื่นของโปรแกรม
โค้ดสำหรับสร้างไดเรกทอรีสำหรับข้อมูล:
import os
path = "/home/school/math/grades/final"
os.mkdir(path)
print("/home/school/math/grades/final has been created.")
โค้ดสร้างไดเรกทอรีใหม่ชื่อ final ในโฟลเดอร์ /home/school/math/grades ในระบบปฏิบัติการ แล้วคืนข้อความ:
/home/school/math/grades/final has been created.
เมธอด mkdir() ใช้สร้างไดเรกทอรีได้ทีละอัน เราไม่สามารถสร้างโฟลเดอร์ final แล้วสร้างโฟลเดอร์ใน final ชื่อ jan2020 ได้
ตัวอย่าง os.mkdir() กับ Permissions
เราสามารถใช้พารามิเตอร์ access ตัวเลือก เพื่อระบุสิทธิ์ที่ต้องการให้ไดเรกทอรี โดยค่าเริ่มต้นสิทธิ์คือ 777 หมายถึงไดเรกทอรีอ่านและเขียนได้โดยเจ้าของและผู้ใช้ทุกคน
แต่ถ้าต้องการตั้งสิทธิ์เอง?
สมมติระบบปฏิบัติการเข้าถึงได้หลายครู และเราต้องการให้สิทธิ์เขียนเฉพาะเจ้าของ เราต้องใช้สิทธิ์ 755 สิทธิ์นี้ระบุว่าไฟล์อ่านและเข้าถึงได้โดยทุกคน แต่เฉพาะเจ้าของเท่านั้นที่เขียนได้
โค้ดสร้าง working directory ด้วย custom permissions:
import os
path = "/home/school/math/grades/final"
access = 0o755
os.mkdir(path, access)
print("/home/school/math/grades/final has been created.")
เราสร้าง target directory ชื่อ /home/school/math/grades/final ด้วยสิทธิ์ 755 หมายถึงไฟล์อ่านได้ทุกคน แต่เขียนได้แค่เจ้าของ โปรแกรมพิมพ์ข้อความ:
/home/school/math/grades/final has been created.
สำคัญ: ตัวแปร access เท่ากับ 0o755 ในโค้ด เราทำเช่นนี้เพราะสิทธิ์การเข้าถึงใช้ออคทัล prefix จึงต้องระบุ 0o ก่อนพารามิเตอร์ access
เพื่อเรียนรู้วิธีตรวจสอบว่าไฟล์หรือไดเรกทอรีมีอยู่หรือไม่ ดูบทช่วยสอน checking if files exist in Python ของเรา
Python Create Multiple Directories
เมธอด os.makedirs() ใน Python สร้างโฟลเดอร์แบบเรียกซ้ำ (recursively) คุณสามารถใช้เมธอดนี้สร้างโฟลเดอร์ในโฟลเดอร์ที่ไม่มีอยู่ได้ os.makedirs() รับอาร์กิวเมนต์หนึ่ง: เส้นทางของโฟลเดอร์ที่ต้องการสร้าง
ดูไวยากรณ์ os.makedirs():
os.makedirs(path, access)
เมธอดนี้รับอาร์กิวเมนต์เหมือน os.mkdir()
ตัวอย่าง Python os.makedirs()
บ่อยครั้งที่เราต้องสร้างไดเรกทอรีที่อยู่ภายในไดเรกทอรีใหม่อื่นๆ
เช่น สมมติเราสร้างโปรแกรมจัดเก็บข้อมูลคะแนนสอบคณิตศาสตร์ แทนที่จะเก็บทั้งหมดในโฟลเดอร์เดียว เราอาจเก็บข้อมูลในหลายโฟลเดอร์
แต่ละโฟลเดอร์จะตรงกับปีและเดือนของการสอบ การจัดเก็บแบบนี้ทำให้ไฟล์หาง่ายขึ้นเมื่อต้องอ้างอิงกลับ
ใช้ตัวอย่างโรงเรียนคณิตศาสตร์สาธิต os.makedirs()
ข้อกำหนดโปรแกรมเปลี่ยนไป ตอนนี้เราต้องการจัดเก็บข้อมูลในโฟลเดอร์ตามปีและเดือนของการสอบ สามารถทำได้ด้วยโค้ดนี้:
import os
path = "/home/school/math/grades/2020/02"
access = 0o755
os.makedirs(path, access)
print("/home/school/math/grades/2020/02 has been created.")
สมมติเรายังไม่มีโฟลเดอร์ 2020 หรือ 02 โค้ดนี้จะสร้างโฟลเดอร์ 2020 ก่อน แล้วสร้างโฟลเดอร์ 02 ภายใน 2020 เรากำหนดสิทธิ์ 755 ให้โฟลเดอร์นี้
หลังโปรแกรมสร้างโฟลเดอร์ พิมพ์ข้อความ:
/home/school/math/grades/2020/02 has been created.
สรุป
การสร้างไดเรกทอรีเป็นการดำเนินการทั่วไปใน Python เมื่อทำงานกับไฟล์ เมธอด os.mkdir() ใช้สร้างไดเรกทอรีเดี่ยว และ os.makedirs() ใช้สร้างไดเรกทอรีหลายระดับ (multi-level)
บทช่วยสอนนี้อธิบายการใช้ os.mkdir() และ os.makedirs() สร้างโฟลเดอร์ใน Python พร้อมสำรวจตัวอย่างแต่ละเมธอด
สนใจเรียนรู้เพิ่มเติมเกี่ยวกับ Python? ดูคู่มือ How to Learn Python สำหรับเคล็ดลับและคำแนะนำจากผู้เชี่ยวชาญ