Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Delete File: คู่มือทีละขั้นตอนสำหรับการลบไฟล์

คุณสามารถลบไฟล์จากคอมพิวเตอร์ของคุณโดยใช้ 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