通过bash脚本循环向python输入一组命令行参数

bash脚本向python文件传递命令行参数

想解决的问题

\quad\quad 在使用python编写脚本文件时,我们可以通过使用argparse.ArgumentParser命令行传递一些超参数,但有时我们想输入多组超参数比对结果,能不能写个bash脚本节省工作量呢?
\quad\quad 例如我们通过以下命令向python脚本文件传递超参数:

python3 main.py -T=2 -epochs=100

\quad\quad 事实上我们想要将[1, 2, 4, 8, 16]等不同的参数传递给-T,以得到不同超参数下的结果,该如何做呢?

解决办法

\quad\quad 如下编写bash脚本文件即可

#!/usr/bin/env bash
# -*- coding: utf-8 -*-

# 定义数组
array=(1 2 4 8 16)

# # 循环数组
# for i in "${array[@]}"; do
#   python3 main.py -T $i
# done

# # 如果python脚本文件需要传入多个命令行参数,可以用函数包裹起来
run_main_file() {
    python3 main.py -T $1 -epochs $2
}

# # 循环,传递给-T参数
for T in "${array[@]}"; do 
    run_main_file $T 100
done

\quad\quad 输出结果为

args.T = 1
args.epochs = 100
args.T = 2
args.epochs = 100
args.T = 4
args.epochs = 100
args.T = 8
args.epochs = 100
args.T = 16
args.epochs = 100

\quad\quad 对应的python脚本文件如下

import argparse

parser = argparse.ArgumentParser(description="This is just a demo script")
parser.add_argument("-T", type=int, default=0)
parser.add_argument("-epochs", type=int, default=0)

args = parser.parse_args()

print(f'args.T = {args.T}')
print(f'args.epochs = {args.epochs}')
exit()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值