คุณสามารถลบไฟล์จากคอมพิวเตอร์ของคุณโดยใช้ Python เมธอด os.remove() ลบไฟล์ Python เดียว os.rmdir() ลบไฟล์หรือไดเรกทอรี เมธอด shutil.rmtree() จะลบไดเรกทอรีและไฟล์ที่อยู่ในมัน
นักพัฒนาใช้ไฟล์ในโปรแกรม Python สำหรับวัตถุประสงค์หลากหลาย เมื่อคุณทำงานกับไฟล์ หนึ่งในฟังก์ชันที่สำคัญที่สุดที่คุณต้องรู้คือวิธีลบไฟล์
ตัวอย่างเช่น สมมติว่าคุณกำลังสร้างโปรแกรมที่วิเคราะห์ประสิทธิภาพของดัชนี S&P 500 และจัดเก็บผลลัพธ์ในไฟล์ คุณอาจต้องการลบไฟล์การวิเคราะห์ที่มีอยู่เพื่อทำพื้นที่สำหรับไฟล์ใหม่
ใน Python คุณสามารถใช้เมธอด os.remove() เพื่อลบไฟล์ และเมธอด os.rmdir() เพื่อลบโฟลเดอร์ว่าง หากคุณต้องการลบโฟลเดอร์พร้อมไฟล์ทั้งหมดของมัน คุณสามารถใช้เมธอด shutil.rmtree()
บทช่วยสอนนี้จะอภิปรายวิธาลบไฟล์และโฟลเดอร์ Python โดยใช้ os.remove(), os.rmdir(), และ shutil.rmtree() เราจะผ่านตัวอย่างของแต่ละเมธอดที่ถูกใช้เพื่อลบไฟล์หรือโฟลเดอร์
บทช่วยสอนการลบไฟล์ Python (Python Delete File Tutorial)
คุณสามารถลบไฟล์โดยใช้เมธอด Python os.remove(), os.rmdir(), และ shutil.rmtree() เมธอดเหล่านี้ลบไฟล์ ไดเรกทอรี และโฟลเดอร์พร้อมไฟล์ทั้งหมดตามลำดับ
วิธีลบไฟล์ใน Python ด้วย os.remove()
เมธอด Python os.remove() ลบไฟล์จากระบบปฏิบัติการของคุณ os.remove() ลบไฟล์เดียวเท่านั้น มันไม่สามารถลบไดเรกทอรีได้
โมดูล os ช่วยให้นักพัฒนาเชื่อมต่อกับระบบปฏิบัติการและระบบไฟล์ของคอมพิวเตอร์ os.remove() เป็นเมธอดที่รวมอยู่ในโมดูล Python os ที่ช่วยให้คุณลบไฟล์เดี่ยวได้
ก่อนที่เราจะเริ่มทำงานกับเมธอดเหล่านี้ เราต้องนำเข้าไลบรารี os โดยใช้คำสั่ง import ของ Python
ไลบรารี os อำนวยความสะดวกในการโต้ตอบกับระบบปฏิบัติการใน Python เราสามารถทำได้โดยใช้โค้ดต่อไปนี้:
import os
ตอนนี้เราพร้อมที่จะเริ่มลบไฟล์ใน Python ด้วยโมดูล os.remove() ใน Python มาดูไวยากรณ์สำหรับเมธอดเส้นทาง os.remove():
import os os.remove(file_location)
เมธอด os.remove() รับพารามิเตอร์หนึ่ง: ตำแหน่งของไฟล์ที่คุณต้องการลบ
สมมติว่าเรากำลังสร้างโปรแกรมที่วิเคราะห์เกรดที่นักเรียนได้ในชั้นเรียนคณิตศาสตร์ตลอดปี
เราต้องการสร้างไฟล์ชื่อ /home/school/math/final_analysis.csv พร้อมข้อมูลที่วิเคราะห์แล้ว แต่ ก่อนที่โปรแกรมของเราจะสร้างไฟล์นั้น เราต้องแน่ใจก่อนว่ามันไม่มีอยู่แล้ว
เราสามารถใช้โค้ดต่อไปนี้เพื่อลบไฟล์นี้:
import os
path = "/home/school/math/final_analysis.csv"
os.remove(path)
print("final_analysis.csv has been deleted.")
ไฟล์ของเราถูกลบแล้ว ข้อความต่อไปนี้ถูกพิมพ์ไปที่คอนโซลโดยใช้คำสั่ง print() ของ Python:
final_analysis.csv has been deleted.
ในบรรทัดแรก เรานำเข้าโมดูล os ซึ่งมีเมธอด os.remove() ที่เราต้องการอ้างอิงในโปรแกรมของเรา จากนั้น เรากำหนดตัวแปร Python ชื่อ path ตัวแปรนี้จัดเก็บเส้นทางไฟล์สำหรับไฟล์ที่เราต้องการลบ
เราจึงใช้ os.remove() และระบุตัวแปร path ของเราเป็นเส้นทางไฟล์ ซึ่งจะลบไฟล์ของเรา
ลบไดเรกทอรีว่างด้วย Python os.rmdir() (Delete Empty Directory Using Python os.rmdir())
เมธอด os.remove() ไม่สามารถใช้ลบโฟลเดอร์ได้ แทนที่จะ เราสามารถใช้เมธอด os.rmdir() เมธอด os.rmdir() ใช้เพื่อลบไฟล์หรือไดเรกทอรีว่าง
os.rmdir() ยอมรับพารามิเตอร์หนึ่ง: เส้นทางของไฟล์ที่คุณต้องการลบ นี่คือไวยากรณ์สำหรับเมธอด os.rmdir():
import os os.rmdir(file_path)
สมมติว่าเราตัดสินใจจัดเก็บข้อมูลที่ประมวลผลแล้วในโฟลเดอร์ชื่อ final ภายในไดเรกทอรี /home/school/math ทุกครั้งที่เรารันโปรแกรมของเรา เราต้องการลบไดเรกทอรีโฟลเดอร์ final เนื่องจากโปรแกรมของเราจะสร้างโฟลเดอร์ใหม่พร้อมข้อมูลที่ประมวลผลแล้ว
เราสามารถใช้โค้ดต่อไปนี้เพื่อลบโฟลเดอร์ final:
import os
path = "/home/school/math/final"
os.rmdir(path)
print("/home/school/math/final has been deleted.")
โค้ดของเราลบไดเรกทอรี /home/school/math/final และคืนค่าข้อความต่อไปนี้ไปที่คอนโซล:
/home/school/math/final has been deleted.
เมธอด os.rmdir() สามารถใช้ลบไดเรกทอรีว่างเท่านั้น หากคุณระบุโฟลเดอร์ที่มีไฟล์ ข้อผิดพลาดต่อไปนี้จะถูกคืนค่า:
[Errno 13] Permission denied: '/home/school/math/final' Directory 'final' can not be removed
การจัดการข้อผิดพลาด Python os (Python os Error Handling)
ในตัวอย่างข้างต้น เราได้ระบุว่าในบางกรณี ข้อผิดพลาดสิทธิ์ (permission error) อาจถูกคืนค่าโดยอาร์กิวเมนต์ หากเราใช้ os.remove() เพื่อลบไดเรกทอรี ข้อผิดพลาดจะถูกคืนค่า หากเราใช้ os.rmdir() เพื่อลบไดเรกทอรีที่มีไฟล์ ข้อผิดพลาดจะถูกคืนค่า
เมื่อคุณลบไฟล์ในโปรแกรม คุณอาจต้องการมีฟังก์ชันที่จัดการข้อผิดพลาดของคุณอย่างเหมาะสมหากเกิดข้อผิดพลาดขึ้น เราสามารถทำได้โดยใช้บล็อก try except
นี่คือตัวอย่างของเมธอด os.rmdir() ข้างต้น แต่พร้อมกลไกจัดการข้อผิดพลาดที่จะพิมพ์ข้อความที่กำหนดไว้ล่วงหน้าหากมีข้อยกเว้นถูกโยน:
import os
path = "/home/school/math/final"
try:
os.rmdir(path)
print("/home/school/math/final has been deleted.")
except OSError as error:
print("There was an error.")
ตอนนี้ หากเรารันโค้ดของเราและไม่มีข้อผิดพลาดคืนค่า ไดเรกทอรีของเราจะถูกลบและข้อความต่อไปนี้จะถูกคืนค่า:
/home/school/math/final has been deleted.
อย่างไรก็ตาม หากเรารันโค้ดของเราและพยายามลบไดเรกทอรีที่มีไฟล์ ตัวอย่างเช่น ข้อความต่อไปนี้จะถูกคืนค่า:
There was an error.
ในโค้ดของเรา เราใช้บล็อก try except กระบวนการนี้รันบรรทัดโค้ดภายในบล็อก try ก่อน หากพบข้อผิดพลาด มันจะรันโค้ดภายในบล็อก except ในกรณีนี้ บล็อก except จะถูกรันก็ต่อเมื่อมี OSError ถูกโยน
หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการจัดการข้อผิดพลาดโดยใช้บล็อก try except ใน Python โปรดอ่านบทช่วยสอนของเราเกี่ยวกับ Python try except
ลบไฟล์ Python พร้อมไดเรกทอรี (Delete File Python with Directories)
ไลบรารี shutil รวมเมธอดชื่อ shutil.rmtree() ที่สามารถใช้ลบไดเรกทอรีที่มีไฟล์ได้
ไลบรารี shutil เสนอฟังก์ชันหลายอย่างที่เกี่ยวข้องกับการดำเนินการไฟล์ ในกรณีของเรา เราต้องการเน้นที่เมธอด shutil.rmtree() ซึ่งลบต้นไม้ไดเรกทอรีทั้งหมด
นี่คือไวยากรณ์สำหรับเมธอด shutil.rmtree():
import shutil shutil.rmtree(file_path)
สังเกตว่าเราได้นำเข้าโมดูล shutil ในโค้ดของเรา เนื่องจาก shutil.rmtree() เป็นส่วนหนึ่งของไลบรารีภายนอก เหมือน os.remove() เราจำเป็นต้องนำเข้าไลบรารีก่อนที่เราจะสามารถใช้งานได้
มาเดินทางผ่านตัวอย่างเพื่อแสดงวิธีที่เมธอดนี้สามารถใช้งานได้ สมมติว่าโปรแกรมวิเคราะห์เกรดของเราต้องการลบไดเรกทอรี final แต่ไดเรกทอรีนั้นมีไฟล์พร้อมข้อมูลที่ประมวลผลแล้วอยู่แล้ว เพื่อลบไดเรกทอรีและไฟล์ทั้งหมดของมัน เราสามารถใช้โค้ดต่อไปนี้:
import shutil
path = "/home/school/math/final"
shutil.rmtree(path)
print("/home/school/math/final has been removed.")
โค้ดของเราลบโฟลเดอร์ final และเนื้อหาทั้งหมดของมัน จากนั้นพิมพ์ข้อความต่อไปนี้ไปที่คอนโซล:
/home/school/math/final has been removed.
สรุป
การลบไฟล์เป็นการดำเนินการที่พบบ่อยใน Python เมธอด os.remove() สามารถใช้ลบไฟล์เฉพาะเจาะจง และเมธอด os.rmdir() สามารถใช้ลบไดเรกทอรีว่าง นอกจากนี้ คุณสามารถใช้เมธอด shutil.rmtree() เพื่อลบโฟลเดอร์ที่มีไฟล์หนึ่งหรือมากกว่า
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ดใน Python โปรดอ่านคู่มือสมบูรณ์ของเราเกี่ยวกับ How to Learn Python