运行我的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除了每个样本中的个体之外的五个数字.
你可以简单地切离的其余部分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以获得更好的处理命令行参数的方法.