将需要传参的python代码在windows系统通过.bat文件执行(含sys和argparse传参方式)

一般来说,python代码作为脚本在执行的时候会直接使用下面的语句执行,但是当python代码功能越多,越复杂时,就需要专门的执行文件,便于代码的执行和移植。
python xxx.py
之前基本使用linux服务器执行python代码,当执行代码传入参数较多时,为避免每次输入命令的复杂,如下

python xxx.py --a --b --c --d --e 

会将python代码的执行命令写入到.sh文件中,把执行路径、运行环境、传入参数等直接写入一个LF格式的.sh文件中,直接在命令行执行如下语句即可,非常省事,传入的参数直接在文件内改就可以,不需要每次重新敲进去

bash xxx.sh

这是在linux系统,最近在windows系统部署环境后,也需要实现在linux的类似功能,直接执行一个文件就可以激活环境,进入执行路径下并执行路径下的python代码。但是windows不能再使用.sh文件了,需要用.bat文件,由于第一次写,花了一点时间摸索。查网上的资料也没多少类似的情况,现在暂记,以便后用。

windows系统的bat文件可通过cmd直接执行,也可直接双击该文件进行执行,所以文件中必须声明执行代码的路径,需要激活的特定的虚拟环境以及执行该python代码的相关传入参数等。

关于python代码中传入参数的方式,我尝试过使用sys库argparse库两种方式,第一种sys.agrv[]:

import sys

def main():
	aa, bb, cc, dd = get_argv(sys.argv)
	...

def get_argv(argv):
	aa = argv[1]
	bb = argv[2]
	cc = argv[3]
	dd = argv[4]
	
	return aa, bb, cc, dd

执行代码时的命令:

python xxx.py aa bb cc dd

第二种是用argparse库,用这种方法的好处是,有的参数可以进行预设,当命令行没有对应的输入时,就会默认采用预设的参数,其传参方法:

import argparse

def main():
	parser = argparse.ArgumentParser()
	parser.add_argument("--aa",type=(int/float/str etc.),default = 1, help="需要传入的参数说明")
	parser.add_argument("--bb",type=(int/float/str etc.),default = 1, help="需要传入的参数说明")
	parser.add_argument("--cc",type=(int/float/str etc.),default = 1, help="需要传入的参数说明")
	parser.add_argument("--dd",type=(int/float/str etc.),default = 1, help="需要传入的参数说明")
	args = parser.parse_args()

执行代码时的命令:

python xxxx.py --aa xxx --bb xxx --cc xxx --dd xxx

xxx为具体的指代参数

从上可发现这两种方式基本是大同小异,sys可以直接传入参数,但是要严格对应参数的顺序,不能对应错了。argparse传入参数要声明传入某个参数(–aa)的对应值,可不用按顺序。

我这里要用到anaconda安装的虚拟环境,并执行带传参的python代码,把上述功能写入一个bat文件可以如下:

@echo off
C:
cd C:\source\python-file\
call activate D:\conda_env\env_name
python xxx.py
cmd /k

其中:

@echo off:

DOS在运行批处理时,会依次执行批处理中的每条命令,并且会在显示器上显示,如果你不想让它们显示,可以加一个“echo off”,当然,“echo off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个“@”。pause使显示器停下,并显示“请按任意键继续_ _ _”

C:
驱动器位置,代码所在大盘。如c盘、D盘

*cd C:\source\python-file*
要执行的python代码所在的具体位置

call activate D:\conda_env\env_name
激活虚拟环境的命令,定位其位置,直接激活环境名

python xxx.py
要执行的python命令,具体执行时,根据传参方式应修改为:

python xxx.py aa bb cc dd

python xxxx.py --aa xxx --bb xxx --cc xxx --dd xxx

也就是只需要修改上述的执行python代码命令,在后面加上传入的参数,这样才能正常执行,否则报错。

其实可以发现,最后的这条命令和在linux命令行直接输入的命令是一样的,只是提前把参数写入了bat文件,还要摸索一下一下怎么通过bat文件读入新赋予的参数来执行python代码。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清梦枕星河~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值