งานคือพัฒนาโปรแกรม Python ที่พิมพ์ชื่อสคริปต์ของมันเองที่กำลังถูกรัน โค้ดเรียบง่าย เราใช้ sys.argv
ใน C ใช้ int main(int argc, char** argv) ซึ่งรับพารามิเตอร์หลายตัว: ตัวแรกคือจำนวนอาร์กิวเมนต์ ตัวที่สองคืออาร์เรย์ที่มีชื่ออาร์กิวเมนต์ทั้งหมด
ใน Python ใช้ sys.argv ซึ่งเป็นลิสต์ของอาร์กิวเมนต์บรรทัดคำสั่ง sys.argv[0] คือชื่อสคริปต์
โค้ดตัวอย่าง
import sys
def main():
my_program = sys.argv[0]
# หาตำแหน่งของ backslash สุดท้าย (Windows path separator)
my_index = my_program.rfind("\\") + 1
# ตัดเอาเฉพาะชื่อไฟล์
my_program_name = my_program[my_index:]
print("Program Name: %s" % my_program_name)
if __name__ == "__main__":
main()
ผลลัพธ์
Program Name: python277.py
วิธีอื่นที่ง่ายกว่า (Cross-platform)
import os
import sys
print("Program Name:", os.path.basename(sys.argv[0]))
print("Full Path:", sys.argv[0])
print("Directory:", os.path.dirname(sys.argv[0]))
คำอธิบาย: os.path.basename() ทำงานได้ทั้ง Windows และ Unix/Linux ไม่ต้องหา backslash หรือ forward slash เอง