- โมดูลของ 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 ความคิดเห็น
ว้าว มีฟีเจอร์ดี ๆ เยอะกว่าที่คิดนะ เจ๋ง
ผมจำได้ว่าเคยเอาไฟล์ zip เข้าไปในเซิร์ฟเวอร์ Linux ที่อยู่ในสภาพแวดล้อมเครือข่ายปิด แล้วดันไม่มีคำสั่ง
unzipเลยต้องแตกไฟล์ด้วยโมดูล
python -m zipfileแล้วค่อยทำงานต่อ