使用 bat 批處理運行 python
最近實習處理數據,在一個工作流里面需要同時使用到 python2 和 python3,這樣我就不能使用一個 main 文件把所有步驟串起來一鍵執行,多了很多人工操控的步驟。
bat 打開了新世界的大門。
這篇筆記講講用到的基本 bat 語法,以及如何使用它來把 python 程序串起來。
bat 基本語法
在此之前,大概解釋一下。bat 就是批處理程序(不確定是不是可以在 linux 上運行)。
bat 注釋
在一行代碼前面加上Rem
就代表注釋,類似 python 中的 #
。
使用示例
Rem Echo test
打印到控制台
在需要打印的文字前面加上ECHO
就代表打印,類似 python 中的 print
。
需要注意的是,bat中的字符串是不需要引號的。
使用示例
ECHO The best language of world is Python.
申明變量
使用set
來申明變量。
比如申明一個名為list
的數組
set list=1 2 3 4
set list=beijing shanghai changsha
FOR循環
使用示例。打印list
數組中的每一個元素。
For %%A IN (%list%) DO (
Rem 這里開始是循環體
ECHO %%A
)
使用 bat 來執行 python 程序
其實就是平時我們在命令行運行 python 程序一樣。
python test.py
python2 test.py
python3 test.py
如果要指定 python 解釋器,那就帶上解釋器的完整路徑。比如
C:\Users\ivy\anaconda3\python.exe test.py
(當然,python 程序也可以是完整路徑。其實建議使用完整路徑,不然 bat 里還要切換工作目錄,比較麻煩。)
給 python 程序傳參數
首先,python 程序里面要設置接收參數。這個使用 sys 包就可以做到。
import sys
print(sys.argv[1]) # 第一個參數 (第0個參數是 python 文件路徑)
print(sys.argv[2]) # 第二個參數
然后,在 bat 里直接在命令后加上對應的參數就好
C:\Users\ivy\anaconda3\python.exe test.py 參數1 參數2
完整示例
@echo off
Rem 申明 list 數組
set list=beijing shanghai changsha
Rem 循環 list 數組
For %%A IN (%list%) DO(
C:\Users\ivy\anaconda3\python.exe test.py %%A
c:\Python27\ArcGIS10.7\python.exe test2.py %%A
ECHO *********** %%A done ****************
)
Rem 循環完不要直接退出程序,等待 check 一下
pause