Python脚本的可变参数数量

Hom*_*map 1 python input

运行我的Python脚本的命令行是:

./parse_ms.py inputfile 3 2 2 2 
Run Code Online (Sandbox Code Playgroud)

参数是输入,数字3是我的研究样本的数量,每个样本有2个人.

在脚本中,我指出参数如下:

inputfile = open(sys.argv[1], "r")
nsam = int(sys.argv[2])
nind1 = int(sys.argv[3])
nind2 = int(sys.argv[4])
nind3 = int(sys.argv[5])
Run Code Online (Sandbox Code Playgroud)

但是,样本数可能会有所不同.我可以有:

./parse_ms.py input 4 6 8 2 20
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我有4个样本,每个样本分别有6,8,2和20个人.

添加另一个sys.argv样本的所有内容似乎效率低下.有没有办法让这更通用?也就是说,如果我写入nsam等于5,则自动地,Python除了每个样本中的个体之外的五个数字.

JET*_*ETM 8

你可以简单地离的其余部分sys.argv到列表中.例如

inputfile = open(sys.argv[1], "r")
num_samples = int(sys.argv[2])
samples = sys.argv[3:3+num_samples]
Run Code Online (Sandbox Code Playgroud)

虽然如果这就是你的论点,你根本就不能传递大量的样本而只是抓住一切.

inputfile = open(sys.argv[1], "r")
samples = sys.argv[2:]
Run Code Online (Sandbox Code Playgroud)

之后可以将样本转换为正确的数据类型.

另外,请查看argparse以获得更好的处理命令行参数的方法.