从命令行传递值 python
Passing values from command line python
我有一个需要多个参数的 python 函数。类似于:
def func(par1=1, par2=2, par3=3):
...
我想让它可以从命令行调用,例如:function.py par1=1 par2=2 par3=3
.
我正在考虑这样做:
import sys
if sys.argv[0][0:4]=="par1":
par1=int(sys.argv[0][5:])
else:
par1=1
但它看起来不太好,因为用户可能只传递一些参数,或者他们可能将其作为 par1 =1
或 par1= 1
或 par1 = 1
传递,所以我会用 if-else 硬编码所有这些可能性。有更好、更专业的解决方案吗?谢谢!
使用标准库中的argparse
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--par1", type=int, default=1, help="This is the description")
opts = parser.parse_args()
print(opts.part1)
如 Amadan 的评论所述,您可能想要 function.py --par1=1 --par2=2 --par3=3
而不是 function.py par1=1 par2=2 par3=3
前者可以使用
function.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--par1", default=11)
parser.add_argument("--par2", default=22)
parser.add_argument("--par3", default=33)
parser.add_argument("--par4", default=44)
opts = parser.parse_args()
print(opts.par1, opts.par2, opts.par3, opts.par4)
$ python function.py # default values
11 22 33 44
$ python function.py --par1 99 # spaces are OK
99 22 33 44
$ python function.py --par1=99 # = are OK
99 22 33 44
我有一个需要多个参数的 python 函数。类似于:
def func(par1=1, par2=2, par3=3):
...
我想让它可以从命令行调用,例如:function.py par1=1 par2=2 par3=3
.
我正在考虑这样做:
import sys
if sys.argv[0][0:4]=="par1":
par1=int(sys.argv[0][5:])
else:
par1=1
但它看起来不太好,因为用户可能只传递一些参数,或者他们可能将其作为 par1 =1
或 par1= 1
或 par1 = 1
传递,所以我会用 if-else 硬编码所有这些可能性。有更好、更专业的解决方案吗?谢谢!
使用标准库中的argparse
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--par1", type=int, default=1, help="This is the description")
opts = parser.parse_args()
print(opts.part1)
如 Amadan 的评论所述,您可能想要 function.py --par1=1 --par2=2 --par3=3
而不是 function.py par1=1 par2=2 par3=3
前者可以使用
function.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--par1", default=11)
parser.add_argument("--par2", default=22)
parser.add_argument("--par3", default=33)
parser.add_argument("--par4", default=44)
opts = parser.parse_args()
print(opts.par1, opts.par2, opts.par3, opts.par4)
$ python function.py # default values
11 22 33 44
$ python function.py --par1 99 # spaces are OK
99 22 33 44
$ python function.py --par1=99 # = are OK
99 22 33 44