0Pricing
Python Academy · บทเรียน

การใช้คำสั่ง with กับไฟล์

ทำให้ไฟล์ถูกปิดโดยอัตโนมัติด้วยตัวจัดการบริบท

การใช้คำสั่ง with กับไฟล์ เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

บทนำ

คำสั่ง with ช่วยให้แน่ใจว่าไฟล์จะถูกปิดโดยอัตโนมัติ แม้จะเกิดข้อยกเว้นขึ้นก็ตาม

คำสั่ง with

with open('file.txt') as f: ... จะปิด f โดยอัตโนมัติเมื่อออกจากบล็อก ไม่ว่าจะออกตามปกติหรือเนื่องจากข้อยกเว้น
# with open('data.txt') as f:
#     content = f.read()
# f is now closed
print('with demo')

เหตุผลที่ with ดีกว่า try/finally

หากไม่ใช้ with คุณต้องเขียน try: ... finally: f.close() เพื่อรับประกันว่าไฟล์จะถูกปิด แต่ with จัดการเรื่องนี้ให้โดยอัตโนมัติ
# Equivalent to:
# f = open('file.txt')
# try:
#     content = f.read()
# finally:
#     f.close()
print('comparison demo')

หลายไฟล์

with open('a.txt') as a, open('b.txt') as b: เปิดไฟล์สองไฟล์ภายในคำสั่งเดียว
# with open('in.txt') as src, open('out.txt','w') as dst:
#     for line in src:
#         dst.write(line.upper())
print('multi-file demo')

โพรโทคอลตัวจัดการบริบท

with ใช้ __enter__ และ __exit__ โดย open() จะคืนออบเจ็กต์ไฟล์ที่ใช้งานสิ่งเหล่านี้ เราจะเขียนตัวจัดการของเราเองในภายหลัง
# f.__enter__() opens
# f.__exit__() closes
print('protocol demo')

การอ่านและประมวลผล

ใช้ with, for line in f: และ .strip() ร่วมกันเพื่อประมวลผลแต่ละบรรทัดอย่างสะอาด โดยตัดการขึ้นบรรทัดใหม่และข้ามบรรทัดว่าง
lines = ['  hello  \n', '  world  \n']
cleaned = [l.strip() for l in lines if l.strip()]
print(cleaned)

การเขียนด้วย with

with open('out.txt','w') as f: f.write('data') — ไฟล์จะถูกล้างบัฟเฟอร์และปิดเมื่อออกจากบล็อก
# with open('out.txt', 'w') as f:
#     for i in range(10):
#         f.write(f'{i}\n')
print('write with demo')

การตรวจสอบว่าไฟล์มีอยู่หรือไม่

import os; os.path.exists('file.txt') จะคืนค่า True หากไฟล์มีอยู่ ช่วยป้องกัน FileNotFoundError
import os
print(os.path.exists('/tmp'))
print(os.path.exists('/nonexistent'))

ข้อผิดพลาดจาก open()

FileNotFoundError: ไม่มีไฟล์อยู่ PermissionError: ไม่มีสิทธิ์อ่านหรือเขียน ควรครอบด้วย try/except เพื่อจัดการได้อย่างรัดกุม
try:
    with open('/nonexistent.txt') as f:
        pass
except FileNotFoundError as e:
    print('File not found:', e)

StringIO สำหรับไฟล์ในหน่วยความจำ

from io import StringIO ช่วยให้ใช้สตริงแทนออบเจ็กต์ไฟล์ได้ เหมาะอย่างยิ่งสำหรับการทดสอบโค้ดประมวลผลไฟล์
from io import StringIO
buf = StringIO('line1\nline2\n')
for line in buf:
    print(line.rstrip())

โมดูล tempfile

tempfile.NamedTemporaryFile() สร้างไฟล์ชั่วคราวที่จะถูกลบเมื่อปิดไฟล์ เหมาะสำหรับการประมวลผลข้อมูลชั่วคราวอย่างปลอดภัย
import tempfile
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=True) as f:
    f.write('temp data')
    print(f.name)

ตรวจสอบความเข้าใจ

คำสั่ง with รับประกันอะไรเมื่อใช้กับการอ่านและเขียนไฟล์?

สรุป

with open(f) as h: จะปิด h โดยอัตโนมัติ ใช้เป้าหมายหลายรายการสำหรับหลายไฟล์ ใช้ StringIO สำหรับการทดสอบในหน่วยความจำ และจัดการ FileNotFoundError อย่างเหมาะสม

ไปต่อ

ทำได้ดีมาก! ไปยังบทเรียนถัดไปเพื่อพัฒนาทักษะต่อไป

คำถามที่พบบ่อย

บทเรียน “การใช้คำสั่ง with กับไฟล์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การใช้คำสั่ง with กับไฟล์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การใช้คำสั่ง with กับไฟล์”

ทำให้ไฟล์ถูกปิดโดยอัตโนมัติด้วยตัวจัดการบริบท คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การใช้คำสั่ง with กับไฟล์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเปิดและอ่านไฟล์
  2. การเขียนและเพิ่มข้อมูลในไฟล์
  3. การใช้คำสั่ง with กับไฟล์
  4. การทำงานกับเส้นทางไฟล์ด้วย pathlib
← กลับไปที่ Python Academy