在日常的開發和使用過程中,我們常常會編寫一些實用的Python腳本,比如用來批量處理文件、獲取系統信息等。然而,每次都要輸入python script_name.py
來運行腳本,時間一長難免覺得繁瑣。要是能像使用系統自帶的命令(如ls
、cd
)一樣,直接在命令行輸入自定義的命令就能執行腳本,那該多方便!實際上,通過幾個簡單的步驟,我們就能將Python腳本變成真正的命令行命令,大幅提升使用效率。
就像類 Unix 系統中常用的wc -l命令用于統計文件行數一樣,接下來,我將通過創建一個功能與之等同的自定義命令count_lines ,分別在類 Unix 系統(如 Linux、macOS)和 Windows 系統中展開講解,詳細說明將 Python 腳本變為命令行命令的實現過程。
案例腳本準備
我們先編寫一個簡單的Python腳本count_lines.py
,它的功能是讀取指定文本文件,并輸出文件的行數。代碼如下:
import sysif len(sys.argv) < 2:print("請輸入要統計行數的文件路徑")sys.exit(1)file_path = sys.argv[1]
try:with open(file_path, 'r', encoding='utf-8') as file:lines = file.readlines()print(f"文件 {file_path} 的行數為: {len(lines)}")
except FileNotFoundError:print(f"文件 {file_path} 不存在")
目前,我們可以通過python count_lines.py test.txt
(假設test.txt
是要統計行數的文件)來運行這個腳本。
$ python count_lines.py test.txt
文件 test.py 的行數為: 177
但是這明顯不夠便捷。接下來,我們就一步步把它變成真正的命令行命令。
一. 類Unix系統實現步驟
步驟一:賦予腳本可執行權限
在類Unix系統(如Linux、macOS)中,文件默認是沒有可執行權限的。我們需要使用chmod
命令為腳本賦予可執行權限,具體操作如下:
$ chmod +x count_lines.py
執行完上述命令后,count_lines.py
就具備了可執行屬性。此時,我們可以嘗試運行腳本,但需要注意,由于當前目錄默認不在系統的PATH
環境變量中,我們需要使用相對路徑來運行,即:
$./count_lines.py test.txt
不過,直接運行可能會遇到錯誤,因為系統此時還不知道該用Python解釋器來執行這個腳本,它會嘗試以Shell腳本的方式去執行,從而導致語法錯誤。別擔心,我們接著進行下一步操作。
步驟二:添加解釋器shebang
Shebang(也稱為Hashbang)是一個特殊的符號,它的作用是告訴系統應該使用哪個解釋器來執行腳本。對于Python腳本,我們通常添加#!/usr/bin/env python
這一行作為腳本的第一行。使用env
的好處在于,它可以根據系統的PATH
環境變量找到正確的Python解釋器,避免了因Python安裝路徑不同而導致的問題。
修改后的count_lines.py
腳本如下:
#!/usr/bin/env python
import sysif len(sys.argv) < 2:print("請輸入要統計行數的文件路徑")sys.exit(1)file_path = sys.argv[1]
try:with open(file_path, 'r', encoding='utf-8') as file:lines = file.readlines()print(f"文件 {file_path} 的行數為: {len(lines)}")
except FileNotFoundError:print(f"文件 {file_path} 不存在")
添加完Shebang后,我們再次嘗試運行腳本:
$./count_lines.py test.txt
此時,腳本就能正常運行了。而且,我們還可以去掉腳本的.py
擴展名,讓它看起來更像一個系統命令:
$ mv count_lines.py count_lines
$./count_lines test.txt
步驟三:將命令添加到PATH環境變量
雖然現在我們可以通過./count_lines
來運行腳本,但還是不夠方便,因為必須在腳本所在的目錄下執行。為了能在任意目錄下都能運行這個命令,我們需要將腳本所在的目錄添加到系統的PATH
環境變量中。
不建議直接將腳本復制到系統級的目錄(如/usr/bin
、/usr/local/bin
),因為這樣可能會引發命名沖突,甚至影響系統穩定性。比較好的做法是在用戶主目錄下創建一個bin
目錄,然后將腳本復制到該目錄,并將bin
目錄添加到PATH
中。
- 創建
bin
目錄:
$ mkdir -p ~/bin
- 復制腳本到
bin
目錄:
$ cp count_lines ~/bin
- 臨時添加
bin
目錄到PATH
(僅對當前會話有效):
$ export PATH=$PATH:$HOME/bin
如果希望設置永久生效,需要將上述命令添加到用戶主目錄下的.profile
或.bash_profile
文件中。以.bash_profile
為例,使用文本編輯器打開該文件:
$ vi ~/.bash_profile
在文件末尾添加以下內容:
export PATH=$PATH:$HOME/bin
保存并關閉文件后,執行source ~/.bash_profile
使配置立即生效。
完成上述步驟后,我們就可以在任意目錄下,像使用系統命令一樣,直接輸入count_lines test.txt
來統計文件行數了。
二. Windows系統實現步驟
在Windows系統中,將Python腳本變成命令行命令的方式與類Unix系統有所不同,主要通過以下幾個步驟來實現:
步驟一:創建批處理文件
批處理文件(.bat
)是Windows系統中用于自動執行一系列命令的文件。我們可以創建一個批處理文件,在其中指定使用Python解釋器來運行我們的腳本。在腳本count_lines.py
所在的目錄下,新建一個文本文件,命名為count_lines.bat
,使用文本編輯器打開,并添加以下內容:
@echo off
python count_lines.py %*
@echo off
用于關閉批處理文件執行過程中的命令回顯,讓界面更加簡潔。python count_lines.py %*
表示使用Python解釋器運行count_lines.py
腳本,并將命令行中輸入的參數傳遞給腳本。
步驟二:配置環境變量
為了能在任意目錄下運行count_lines.bat
,我們需要將其所在目錄添加到系統的環境變量中。具體操作如下:
-
打開“系統屬性”:右鍵點擊“此電腦”,選擇“屬性”,在彈出的窗口中點擊“高級系統設置”。
-
進入“環境變量”設置:在“系統屬性”窗口的“高級”選項卡中,點擊“環境變量”按鈕。
-
編輯
Path
環境變量:在“系統變量”列表中找到Path
變量,點擊“編輯”。 -
添加路徑:點擊“新建”,輸入
count_lines.bat
所在的目錄路徑(例如C:\scripts
,根據實際情況填寫),然后點擊“確定”保存設置。
步驟三:測試命令
完成環境變量配置后,打開命令提示符(CMD)或PowerShell,在任意目錄下輸入count_lines.bat test.txt
,即可運行腳本統計文件行數。如果希望直接輸入count_lines test.txt
就能運行,可以將count_lines.bat
改名為count_lines
(去掉.bat
擴展名),不過需要注意,這樣可能會與系統中其他同名文件或命令產生沖突,操作時需謹慎。
PS E:\> count_lines test.txt
文件 test.py 的行數為: 177
通過以上步驟,無論是在類Unix系統還是Windows系統中,我們都成功將Python腳本變成了便捷的命令行命令。當然,Python在命令行工具開發方面的潛力遠不止于此。利用click
、argparse
等強大的庫,我們還能開發出功能更豐富、交互更友好的命令行應用。后續,我也會分享更多關于Python命令行工具開發的進階內容,幫助大家打造出更專業、更實用的工具。如果你在實踐過程中遇到任何問題,歡迎隨時交流討論!