运行我的 Python 脚本的命令行是:
./parse_ms.py inputfile 3 2 2 2
参数是输入,数字 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])
但是,样本数量可能会有所不同。我可以拥有:
./parse_ms.py input 4 6 8 2 20
在这种情况下,我有 4 个样本,每个样本分别有 6、8、2 和 20 个个体。
添加另一个 sys.argv 似乎效率低下 everything a sample is added。有没有办法使它更通用?也就是说,如果我将 nsam 写成等于 5,Python 会自动为每个样本中的个体排除五个数字。
请您参考如下方法:
你可以简单地slice将 sys.argv 的其余部分放入列表中。例如
inputfile = open(sys.argv[1], "r")
num_samples = int(sys.argv[2])
samples = sys.argv[3:3+num_samples]
尽管如果这就是您的全部论据,您也可以不传递大量样本而只获取所有内容。
inputfile = open(sys.argv[1], "r")
samples = sys.argv[2:]
之后可以将样本转换为正确的数据类型。
另外,看看 argparse用于更好地处理一般命令行参数的方法。
