使用 bat 批处理运行 python

时间:2024-04-16 08:44:53

使用 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