วิธีสร้างและลบโฟลเดอร์ด้วย Python: ใช้ os กับ pathlib ให้เหมาะ

1. วิธีพื้นฐานในการสร้างโฟลเดอร์ด้วย Python

ใน Python มีวิธีสร้างโฟลเดอร์ได้อย่างง่ายดายโดยใช้ไลบรารีมาตรฐาน โดยที่ใช้บ่อยที่สุดคือโมดูล os ในส่วนนี้จะอธิบายรายละเอียดวิธีการสร้างโฟลเดอร์ด้วยโมดูล os

วิธีสร้างโฟลเดอร์ด้วย Python: โมดูล os

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

# กำหนดพาธของโฟลเดอร์ที่จะสร้าง
path = 'example_folder'

# สร้างโฟลเดอร์
os.mkdir(path)
ในโค้ดนี้จะใช้ฟังก์ชัน os.mkdir() เพื่อสร้างโฟลเดอร์ใหม่ชื่อ “example_folder” อย่างไรก็ตาม หากโฟลเดอร์มีอยู่แล้ว ฟังก์ชันนี้จะทำให้เกิด FileExistsError

การสร้างโฟลเดอร์หลายชั้น:os.makedirs()

หากต้องการสร้างไม่ใช่แค่โฟลเดอร์เดี่ยว แต่เป็นไดเรกทอรีหลายชั้นในครั้งเดียว ให้ใช้ฟังก์ชัน os.makedirs()
import os

# ระบุพาธโฟลเดอร์แบบหลายชั้น
path = 'example_folder/subfolder'

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

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

หากต้องการไม่ให้เกิดข้อผิดพลาดและให้กระบวนการดำเนินต่อไปแม้โฟลเดอร์จะมีอยู่แล้ว ให้ใช้ตัวเลือก exist_ok=True เมื่อตั้งค่าเช่นในตัวอย่างด้านล่าง จะไม่เกิดข้อผิดพลาดแม้โฟลเดอร์จะมีอยู่แล้ว
import os

path = 'example_folder/subfolder'

# ละเว้นข้อผิดพลาดแม้ว่าโฟลเดอร์จะมีอยู่แล้ว
os.makedirs(path, exist_ok=True)
ด้วยวิธีนี้ แม้โปรแกรมจะพยายามสร้างโฟลเดอร์เดิมซ้ำทุกครั้งที่รัน ก็จะไม่เกิดข้อผิดพลาด ทำให้เขียนโค้ดที่ทนทานได้

2. การสร้างโฟลเดอร์ด้วยโมดูล Pathlib

ตั้งแต่ Python 3.4 ขึ้นไป โมดูล pathlib ถูกเพิ่มเข้ามาในไลบรารีมาตรฐาน โมดูลนี้ช่วยให้จัดการพาธแบบเชิงวัตถุ และสร้างโฟลเดอร์ได้อย่างเข้าใจง่าย ในที่นี้จะอธิบายวิธีการสร้างโฟลเดอร์ด้วยโมดูล pathlib.

วิธีใช้โมดูล Pathlib

สามารถสร้างไดเรกทอรีได้ด้วยการใช้ pathlib.Path() เช่นเดียวกับโมดูล os การระบุ exist_ok=True จะช่วยหลีกเลี่ยงข้อผิดพลาดแม้มีโฟลเดอร์อยู่แล้ว。
from pathlib import Path

# ระบุพาธของโฟลเดอร์ที่ต้องการสร้าง
path = Path('example_folder/subfolder')

# สร้างโฟลเดอร์
path.mkdir(parents=True, exist_ok=True)
ในโค้ดนี้ การระบุ parents=True จะทำให้สร้างไดเรกทอรีแม่ไปพร้อมกันแม้ยังไม่มีอยู่ ด้วยเหตุนี้จึงทำงานได้เช่นเดียวกับ os.makedirs().

ข้อดีของโมดูล Pathlib

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

3. การจัดการข้อผิดพลาดในการสร้างโฟลเดอร์

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

การจัดการข้อผิดพลาดด้านสิทธิ์และพาธที่ไม่ถูกต้อง

os.makedirs() หรือ pathlib.Path().mkdir() ระหว่างการสร้างโฟลเดอร์อาจเกิดข้อผิดพลาดทั่วไป เช่น PermissionError และ FileNotFoundError การจัดการข้อผิดพลาดเหล่านี้อย่างเหมาะสมจะช่วยให้สร้างโปรแกรมที่แข็งแกร่งยิ่งขึ้นได้ ต่อไปนี้เป็นตัวอย่างการจัดการข้อผิดพลาด
import os

path = 'example_folder/subfolder'

try:
    os.makedirs(path, exist_ok=True)
    print(f'โฟลเดอร์ "{path}" ถูกสร้างเรียบร้อยแล้ว')
except PermissionError:
    print('ไม่มีสิทธิ์ในการสร้างโฟลเดอร์')
except FileNotFoundError:
    print('พาธที่ระบุไม่ถูกต้อง')
except Exception as e:
    print(f'เกิดข้อผิดพลาดที่ไม่คาดคิด: {e}')
โค้ดนี้แสดงวิธีรับมือกับข้อผิดพลาดทั่วไปแต่ละประเภท และยังรองรับข้อผิดพลาดที่ไม่คาดคิดด้วย ทำให้โปรแกรมสามารถจัดการข้อผิดพลาดได้อย่างเหมาะสมโดยไม่หยุดทำงานกลางคัน

การจัดการข้อผิดพลาดขั้นสูง

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

4. วิธีลบโฟลเดอร์

นอกจากการสร้างโฟลเดอร์แล้ว เรายังมักต้องลบโฟลเดอร์ที่ไม่จำเป็นด้วย ใน Python สามารถลบโฟลเดอร์ได้โดยใช้โมดูล os และ shutil จากไลบรารีมาตรฐาน ที่นี่จะอธิบายวิธีการโดยละเอียด

การลบโฟลเดอร์ด้วย os.rmdir()

os โมดูลมีฟังก์ชันชื่อ rmdir() ที่สามารถลบโฟลเดอร์ได้ อย่างไรก็ตาม ฟังก์ชันนี้มีข้อจำกัดว่าโฟลเดอร์ที่จะลบต้องว่างเปล่า
import os

# ระบุพาธของโฟลเดอร์ที่ต้องการลบ
path = 'example_folder/subfolder'

# ลบโฟลเดอร์
os.rmdir(path)
โค้ดนี้จะทำงานได้ถูกต้องเฉพาะเมื่อโฟลเดอร์ที่ระบุว่างเปล่าเท่านั้น หากมีไฟล์หรือไดเรกทอรีอื่นอยู่ภายใน จะเกิด OSError ขึ้น

การลบโฟลเดอร์แบบเรียกซ้ำด้วย shutil.rmtree()

หากภายในโฟลเดอร์มีไฟล์หรือซับโฟลเดอร์อยู่ สามารถใช้ฟังก์ชัน rmtree() ของโมดูล shutil เพื่อลบโฟลเดอร์และเนื้อหาภายในแบบเรียกซ้ำได้
import shutil

# ระบุพาธของโฟลเดอร์ที่ต้องการลบ
path = 'example_folder/subfolder'

# ลบโฟลเดอร์และเนื้อหาภายใน
shutil.rmtree(path)
วิธีนี้สามารถลบโฟลเดอร์ได้แม้ไดเรกทอรีจะไม่ว่าง จึงสะดวกเมื่อคุณต้องการลบทั้งโครงสร้างไดเรกทอรีทั้งหมด อย่างไรก็ตาม ไฟล์และโฟลเดอร์ที่ถูกลบจะไม่สามารถกู้คืนได้ จึงควรใช้อย่างระมัดระวัง

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

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

path = 'example_folder/subfolder'

try:
    shutil.rmtree(path)
    print(f'โฟลเดอร์ "{path}" ถูกลบแล้ว.')
except PermissionError:
    print('ไม่มีสิทธิ์ลบโฟลเดอร์.')
except FileNotFoundError:
    print('ไม่พบโฟลเดอร์ที่ระบุ.')
except Exception as e:
    print(f'เกิดข้อผิดพลาดที่ไม่คาดคิด: {e}')
โค้ดนี้จัดการข้อผิดพลาดที่อาจเกิดขึ้นระหว่างการลบ และยังรองรับข้อผิดพลาดที่ไม่คาดคิดได้อย่างยืดหยุ่น

5. กรณีการใช้งานจริง

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

การสร้างโฟลเดอร์ตามปีและเดือน

ตัวอย่างเช่น หากต้องการจัดระเบียบข้อมูลตามปีหรือเดือน ก็สามารถเขียนสคริปต์เพื่อสร้างโฟลเดอร์โดยอัตโนมัติได้。
import os
from datetime import datetime

# ดึงปีและเดือนปัจจุบัน
current_year = datetime.now().year
current_month = datetime.now().month

# กำหนดพาธของโฟลเดอร์
folder_path = f'data/{current_year}/{current_month}'

# สร้างโฟลเดอร์
os.makedirs(folder_path, exist_ok=True)
print(f'โฟลเดอร์ "{folder_path}" ถูกสร้างแล้ว。')
สคริปต์นี้จะสร้างโฟลเดอร์โดยอัตโนมัติตามปีและเดือนปัจจุบัน และช่วยจัดระเบียบข้อมูลได้อย่างมีประสิทธิภาพ。

การลบโฟลเดอร์แบบเป็นชุด

หากต้องการลบโฟลเดอร์ที่ไม่จำเป็นจำนวนมากในครั้งเดียวตามเงื่อนไขที่กำหนด ก็สามารถใช้ Python เพื่อดำเนินการได้อย่างมีประสิทธิภาพ ตัวอย่างเช่น สามารถเขียนสคริปต์เพื่อลบโฟลเดอร์ข้อมูลเก่าที่ผ่านมาเกินระยะเวลาที่กำหนดไว้แล้ว
import shutil
import os
from datetime import datetime, timedelta

# รับวันที่ย้อนหลัง 30 วัน
threshold_date = datetime.now() - timedelta(days=30)

# พาธฐานของโฟลเดอร์ที่จะลบ
base_path = 'data/'

# ตรวจสอบโฟลเดอร์และลบโฟลเดอร์ที่เก่า
for folder_name in os.listdir(base_path):
    folder_path = os.path.join(base_path, folder_name)
    if os.path.isdir(folder_path):
        folder_date = datetime.strptime(folder_name, '%Y-%m-%d')
        if folder_date < threshold_date:
            shutil.rmtree(folder_path)
            print(f'โฟลเดอร์เก่า "{folder_path}" ถูกลบแล้ว。')
ในกรณีการประยุกต์ใช้ลักษณะนี้ การใช้โปรแกรมเพื่อทำให้การจัดการและการจัดระเบียบโฟลเดอร์เป็นแบบอัตโนมัติ จะช่วยลดความจำเป็นในการดำเนินการด้วยตนเองลงได้

6. สรุป

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