ส่วนต่อไปนี้จะอธิบายวิธีสร้างและบันทึกไฟล์ใหม่ใน Python โดยใช้ไดเร็กทอรี (โฟลเดอร์) ใหม่เป็นปลายทาง
- เกิดข้อผิดพลาดเมื่อระบุไดเร็กทอรีที่ไม่มีอยู่ด้วย open()(
FileNotFoundError
) os.makedirs()
สร้างไดเร็กทอรี- ตัวอย่างโค้ดสำหรับสร้างไฟล์ใหม่ที่มีปลายทาง
ต่อไปนี้คือตัวอย่างไฟล์ข้อความ
เมื่อจัดเก็บรูปภาพ ขึ้นอยู่กับไลบรารีว่าคุณสามารถระบุพาธที่มีไดเร็กทอรีที่ไม่มีอยู่หรือไม่ (หรือจะสร้างไดเร็กทอรีดังกล่าวโดยอัตโนมัติหากไม่มีอยู่)FileNotFoundError
หากเกิดข้อผิดพลาดนี้ คุณสามารถสร้างไดเร็กทอรีใหม่ด้วย os.madeirs() ก่อนเรียกใช้ฟังก์ชันเพื่อบันทึก ดังตัวอย่างต่อไปนี้
เกิดข้อผิดพลาดเมื่อระบุไดเร็กทอรีที่ไม่มีอยู่ด้วย open()(FileNotFoundError)
เมื่อสร้างไฟล์ใหม่ด้วยฟังก์ชัน open() ในตัว จะเกิดข้อผิดพลาดหากมีการระบุเส้นทางที่มีไดเร็กทอรีใหม่ (ไดเร็กทอรีที่ไม่มีอยู่) เป็นอาร์กิวเมนต์แรกเป็นปลายทาง(FileNotFoundError
)
open('not_exist_dir/new_file.txt', 'w')
# FileNotFoundError
อาร์กิวเมนต์แรกของ open() อาจเป็นพาธสัมบูรณ์หรือพาธที่สัมพันธ์กับไดเร็กทอรีปัจจุบัน
สำหรับการใช้งานพื้นฐานของ open() เช่น การสร้างไฟล์ใหม่ในไดเร็กทอรีที่มีอยู่ หรือการเขียนทับหรือต่อท้ายไฟล์ที่มีอยู่ โปรดดูบทความต่อไปนี้
สร้างไดเร็กทอรี(os.makedirs())
เมื่อสร้างไฟล์ใหม่ในไดเร็กทอรีที่ไม่มีอยู่ จำเป็นต้องสร้างไดเร็กทอรีก่อน open()
หากคุณกำลังใช้ Python 3.2 หรือใหม่กว่า จะสะดวกที่จะใช้ os.makedirs() โดยมีอาร์กิวเมนต์ที่มีอยู่_ok=True แม้ว่าไดเร็กทอรีเป้าหมายจะมีอยู่แล้ว จะไม่มีข้อผิดพลาดเกิดขึ้นและสามารถสร้างไดเร็กทอรีได้ในครั้งเดียว
import os
os.makedirs(new_dir_path, exist_ok=True)
หากคุณมี Python เวอร์ชันเก่าและไม่มีอาร์กิวเมนต์ที่มีอยู่แล้วใน os.makedirs() คุณจะได้รับข้อผิดพลาดหากคุณระบุพาธไปยังไดเร็กทอรีที่มีอยู่ ดังนั้นให้ใช้ os.path.exists() เพื่อตรวจสอบ การมีอยู่ของไดเร็กทอรีก่อน
if not os.path.exists(new_dir_path):
os.makedirs(new_dir_path)
ดูบทความต่อไปนี้สำหรับรายละเอียด
- บทความที่เกี่ยวข้อง:makedirs เพื่อสร้างไดเร็กทอรีแบบลำดับชั้นลึกแบบเรียกซ้ำใน Python
ตัวอย่างโค้ดสำหรับสร้างไฟล์ใหม่ที่มีปลายทาง
ต่อไปนี้คือตัวอย่างโค้ดของฟังก์ชันที่สร้างและบันทึกไฟล์ใหม่โดยระบุไดเร็กทอรีปลายทาง
อาร์กิวเมนต์แรก dir_path คือพาธของไดเร็กทอรีปลายทาง ชื่อไฟล์อาร์กิวเมนต์ที่สองคือชื่อของไฟล์ใหม่ที่จะสร้าง และอาร์กิวเมนต์ที่สาม file_content คือเนื้อหาที่จะเขียน โดยแต่ละรายการจะระบุเป็นสตริง
หากไม่มีไดเร็กทอรีที่ระบุ ให้สร้างไดเร็กทอรีใหม่
import os
def save_file_at_dir(dir_path, filename, file_content, mode='w'):
os.makedirs(dir_path, exist_ok=True)
with open(os.path.join(dir_path, filename), mode) as f:
f.write(file_content)
ใช้ดังนี้.
save_file_at_dir('new_dir/sub_dir', 'new_file.txt', 'new text')
ในกรณีนี้ ไฟล์ new_file.txt ที่มีเนื้อหา “ข้อความใหม่” จะถูกสร้างขึ้นใน new_dir\sub_dir กล่าวคือ ไฟล์ต่อไปนี้จะถูกสร้างขึ้นใหม่new_dir/sub_dir/new_file.txt
การต่อไดเร็กทอรีและชื่อไฟล์ด้วย os.path.join()
นอกจากนี้ โหมดของ open() ถูกระบุเป็นอาร์กิวเมนต์ สำหรับไฟล์ข้อความ ค่าเริ่มต้น ‘w’ ก็ใช้ได้ แต่ถ้าคุณต้องการสร้างไฟล์ไบนารี ให้ตั้งค่า mode=’wb’