ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่พิมพ์ ชื่อไฟล์สคริปต์ Python ที่กำลังรันอยู่ เราสามารถดึงข้อมูลนี้ได้จากโมดูล sys
หลักการทำงาน
- โมดูล
sysเก็บอาร์กิวเมนต์บรรทัดคำสั่ง (command line arguments) ไว้ในลิสต์sys.argv - อิลิเมนต์แรก (
sys.argv[0]) คือ ชื่อไฟล์สคริปต์ (อาจเป็น relative path) - ใช้
os.path.abspath()เพื่อแปลงเป็น absolute path
ขั้นตอนการเขียนโปรแกรม
- Import โมดูล
sysและos - พิมพ์
os.path.abspath(sys.argv[0]) - เสร็จแล้ว - ได้ absolute path ของสคริปต์
ตัวอย่างโค้ด
import sys
import os
# พิมพ์ absolute path ของไฟล์สคริปต์ที่กำลังรัน
print(os.path.abspath(sys.argv[0]))
ตัวอย่าง Output
C:\Users\username\Projects\myscript.py # หรือใน Linux/macOS /home/username/projects/myscript.py
ข้อสังเกตเพิ่มเติม
- หากรันใน interactive shell (REPL)
sys.argv[0]อาจเป็น''หรือ'-c' - หากต้องการแค่ชื่อไฟล์ (ไม่รวม path) ใช้
os.path.basename(sys.argv[0]) - ใน Python 3.4+ สามารถใช้
__file__ได้เช่นกัน (แต่ไม่ทำงานใน REPL)
สรุป
การดึงชื่อไฟล์สคริปต์ผ่าน sys.argv[0] เป็นวิธีมาตรฐานและน่าเชื่อถือ สามารถนำไปใช้ใน logging, debugging หรือแสดงข้อมูลให้ผู้ใช้ได้
หากมีข้อสงสัย สามารถถามได้ในส่วนความคิดเห็นครับ