Python 向argparse参数添加附加参数
我是python中使用arparse模块的新手,希望有人能帮助我解决以下问题。 我使用以下方法指定可变数量的文件作为输入:Python 向argparse参数添加附加参数,python,argparse,Python,Argparse,我是python中使用arparse模块的新手,希望有人能帮助我解决以下问题。 我使用以下方法指定可变数量的文件作为输入: parser = argparse.ArgumentParser(description='Get Files') parser.add_argument('-i','--input', help='Input file(s)',required=True, nargs='+') args = parser.parse_args() 我想指定一个可变数量的文件输
parser = argparse.ArgumentParser(description='Get Files')
parser.add_argument('-i','--input', help='Input file(s)',required=True, nargs='+')
args = parser.parse_args()
我想指定一个可变数量的文件输入,每个文件输入都有一个1或2的关联值,但我不确定如何做到这一点
我希望程序正常工作,以便我的命令行条目应为:
MyProgram.py -i myfile.txt 2 secondfile.txt 1 ...
一旦我完成了这项工作,我如何调用程序中的每个文件?您的代码可以正常工作。您可以使用循环遍历
args。一次输入两项:
import argparse
parser = argparse.ArgumentParser(description='Get Files')
parser.add_argument('-i','--input', help='Input file(s)',required=True, nargs='+')
args = parser.parse_args()
for filename, num in zip(*[iter(args.input)]*2):
print(filename, num)
# with open(filename) as f:
# ....
屈服
('myfile.txt', '2')
('secondfile.txt', '1')
您最好使用sys.argv
as
import sys, os
variables = list()
filenames = list()
if( len( sys.argv ) > 1 ):
if( sys.argv[1] == '-i' )or( sys.argv[1] == '--input' ):
N = len( sys.argv[1:] )
for i in range( 2, N, 2 ):
variables.append( int( sys.argv[i] ) )
filenames.append( sys.argv[i+1] )
for file in filenames:
# do something here
os.system( 'less '+file )
我还没有测试过这个,但应该可以。试试这个:
parser = argparse.ArgumentParser(description='Get Files')
parser.add_argument('-i','--input', help='Input file(s)',
required=True, nargs='+', action='append')
args = parser.parse_args()
对于每对输入,使用-i
一次会更清晰,如下所示:
parser.add_argument("-i", "--input", nargs=2, action='append')
现在,args.input
将是一个列表列表,如下所示
[ ['myfile.txt', 2], ['secondfile.txt', 1] ]
由于每个文件需要显式键入一次-i
,因此用户需要稍微多键入一次
另一个选项是将每个参数指定为单个单词,然后使用类型
参数解析单词。我也会去掉-I
参数,并对所需的“选项”使用位置参数
用法将是
myscript.py myfile.txt:1 secondfile.txt:2 ...
myscript.py myfile.txt:1 secondfile.txt:2 ...