25 คะแนน โดย xguru 2024-06-05 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • โมดูลของ Python สามารถใช้งานเป็นเครื่องมือบรรทัดคำสั่งได้
    • ตัวอย่างเช่น หากรันโมดูล webbrowser จากบรรทัดคำสั่ง ก็สามารถเปิด URL ที่กำหนดผ่านเว็บเบราว์เซอร์เริ่มต้นได้
    • ในไลบรารีมาตรฐานของ Python มีโมดูลแบบลูกผสมระหว่างโมดูลกับสคริปต์ลักษณะนี้อยู่มากมาย
  • เมื่อรัน Python ด้วยออปชัน -m จะเป็นการรันโมดูล Python ที่กำหนดเหมือนกับเป็นสคริปต์
    • บางโมดูลจะทำบางอย่างทันทีตอนถูก import เช่น โมดูล antigravity จะเปิดการ์ตูน XKCD ในเว็บเบราว์เซอร์ และเมื่อรันจากบรรทัดคำสั่งก็จะได้ผลเหมือนกับการ import โมดูลนั้น
    • สิ่งนี้เรียกว่า import side effect ซึ่งโมดูลส่วนใหญ่จะพยายามหลีกเลี่ยง โดยโมดูล easter egg อย่าง antigravity ถือเป็นข้อยกเว้น
    • โมดูลที่หลีกเลี่ยง import side effect จะใช้ตัวแปร __name__ เพื่อให้ทำงานต่างกันระหว่างตอนถูก import เป็นโมดูลกับตอนถูกรันเป็นสคริปต์

เครื่องมือบรรทัดคำสั่งเอนกประสงค์ที่มีประโยชน์

  • python -m http.server: เริ่มต้นเว็บเซิร์ฟเวอร์แบบง่าย
  • python -m webbrowser: เปิดเว็บเบราว์เซอร์
  • python -m json.tool: จัดรูปแบบข้อมูล JSON ให้อ่านง่าย
  • python -m calendar: แสดงปฏิทินบนบรรทัดคำสั่ง

เครื่องมือที่มีประโยชน์มากเป็นพิเศษบน Windows

  • python3.12 -m uuid: คล้ายกับยูทิลิตี CLI uuidgen
  • python3.12 -m sqlite3: คล้ายกับยูทิลิตี CLI sqlite3
  • python -m zipfile: คล้ายกับยูทิลิตี CLI สำหรับ zip และ unzip
  • python -m gzip: คล้ายกับยูทิลิตี CLI สำหรับ gzip และ gunzip
  • python -m tarfile: คล้ายกับยูทิลิตี CLI tar

เครื่องมือที่มีประโยชน์เมื่อต้องทำงานกับโค้ด Python

  • python -m pip: ติดตั้งแพ็กเกจ Python จากบุคคลที่สาม
  • python -m venv: สร้าง virtual environment
  • python -m pdb: รันดีบักเกอร์ของ Python
  • python -m unittest: รันการทดสอบ unittest
  • python -m pydoc: ดูเอกสาร
  • python -m doctest: รัน doctest ของไฟล์ที่กำหนด
  • python -m ensurepip: ติดตั้ง pip
  • python -m idlelib: รัน REPL แบบกราฟิกของ IDLE
  • python -m zipapp: แปลงโมดูล Python เป็น ZIP ที่รันได้
  • python -m compileall: คอมไพล์ไฟล์ Python ล่วงหน้าเป็น bytecode

เครื่องมือวิเคราะห์โค้ด Python

  • python -m tokenize: แยกโมดูล Python ออกเป็นโทเค็น
  • python -m ast: แสดง abstract syntax tree ของโค้ด
  • python -m dis: disassemble โค้ด Python เป็น bytecode
  • python -m inspect: ตรวจสอบซอร์สโค้ดของอ็อบเจ็กต์ Python
  • python -m pyclbr: ดูภาพรวมของอ็อบเจ็กต์ต่าง ๆ ในโมดูล

สคริปต์สนุก ๆ ที่ทำงานเป็น easter egg ของ Python

  • python -m __hello__: แสดงผล "Hello world!"
  • python -m this: แสดง The Zen of Python (PEP 20)
  • python -m antigravity: เปิดการ์ตูน XKCD หมายเลข 353 ที่เกี่ยวกับ Python ในเว็บเบราว์เซอร์
  • python -m turtledemo: แสดงเดโมภาพวาดหลากหลายแบบที่วาดได้ด้วยโมดูล turtle

เครื่องมืออื่น ๆ ที่เกี่ยวข้องกับ Python

  • python -m asyncio: รัน REPL ของ Python ที่รองรับ asyncio
  • python -m cProfile: ทำ profiling โปรแกรม Python
  • python -m pstats: ดูสถิติโปรไฟล์ที่สร้างโดย cProfile
  • python -m pickle: ดูเนื้อหาของไฟล์ pickle (ระดับสูง)
  • python -m pickletools: แยกวิเคราะห์ไฟล์ pickle (ระดับต่ำ)

เครื่องมือที่มีประโยชน์น้อยกว่า

  • python -m timeit: วัดเวลาการทำงานของ expression ใน Python
  • python -m site: ดูข้อมูล site ของ Python
  • python -m sysconfig: ดูรายละเอียดการตั้งค่าของ Python
  • python -m platform: ดูข้อมูลแพลตฟอร์มปัจจุบัน
  • python -m mimetypes: ดูข้อมูล mimetype/นามสกุลไฟล์
  • python -m quopri: เข้ารหัส/ถอดรหัสข้อมูลอีเมลแบบ raw
  • python -m filecmp: เปรียบเทียบเนื้อหาของไดเรกทอรี 2 แห่ง
  • python -m tabnanny: ตรวจสอบการปนกันของแท็บและช่องว่างในไฟล์ Python

2 ความคิดเห็น

 
han905 2024-06-11

ว้าว มีฟีเจอร์ดี ๆ เยอะกว่าที่คิดนะ เจ๋ง

 
dhy0613 2024-06-05

ผมจำได้ว่าเคยเอาไฟล์ zip เข้าไปในเซิร์ฟเวอร์ Linux ที่อยู่ในสภาพแวดล้อมเครือข่ายปิด แล้วดันไม่มีคำสั่ง unzip
เลยต้องแตกไฟล์ด้วยโมดูล python -m zipfile แล้วค่อยทำงานต่อ