การเปลี่ยน working directory
คุณกำลังใช้ไลบรารีโอเพนซอร์สสำหรับฝึก deep neural network กับข้อมูลของคุณ แต่มีปัญหาอยู่อย่างหนึ่ง คือระหว่างการฝึกโมเดล ไลบรารีนี้จะบันทึก checkpoint model (คือโมเดลที่ฝึกมาแล้วบางส่วน) ลงใน working directory ปัจจุบัน ซึ่งค่อนข้างน่ารำคาญ เพราะไม่อยากต้องรันสคริปต์จากโฟลเดอร์เดียวกับที่บันทึกโมเดลทุกครั้ง
วิธีแก้ปัญหาที่เลือกใช้คือเขียน context manager ที่เปลี่ยน working directory ปัจจุบัน ให้สร้างโมเดลได้ตามต้องการ แล้วรีเซ็ต working directory กลับไปยังตำแหน่งเดิม สิ่งสำคัญคือต้องมั่นใจว่าหากเกิดข้อผิดพลาดระหว่างการฝึกโมเดล working directory จะถูกรีเซ็ตกลับเสมอ ไม่ว่าจะเกิดอะไรขึ้น
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนฟังก์ชันใน Python
คำแนะนำการฝึกหัด
- เพิ่มคำสั่งสำหรับจัดการข้อผิดพลาดที่อาจเกิดขึ้นภายใน context
- เพิ่มคำสั่งที่รับประกันว่า
os.chdir(current_dir)จะถูกเรียกใช้เสมอ ไม่ว่าจะเกิดข้อผิดพลาดหรือไม่ก็ตาม
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
def in_dir(directory):
"""Change current working directory to `directory`,
allow the user to run some code, and change back.
Args:
directory (str): The path to a directory to work in.
"""
current_dir = os.getcwd()
os.chdir(directory)
# Add code that lets you handle errors
____:
yield
# Ensure the directory is reset,
# whether there was an error or not
____:
os.chdir(current_dir)