从命令行传递多个参数
Pass multiple argument from command line
我正在尝试
import sys, getopt
def main(argv):
inputfile = ''
outputfile = ''
dpd = ''
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile=","dpd="])
print(opts)
for opt, arg in opts:
print(opt)
if opt == '-h':
print ('test.py -i <inputfile> -o <outputfile>')
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
elif opt in ("-d","--dpd"):
dpd = arg
print ('Input file is ', inputfile)
print ('Output file is ', outputfile)
print ('DPD', dpd)
if __name__ == "__main__":
main(sys.argv[1:])
and 运行 with python3 demo.py -i 65 -o ale -d 45
但它给出错误
getopt.GetoptError: 选项 -d 无法识别
我想传递 6 pass 参数我该怎么做?
在 Python 中有一个内置的 library。我强烈建议您使用它 - 开箱即用,错误信息会更丰富。
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-d', '--dpd')
>>> args = parser.parse_args(['-d', 'bla'])
>>> args.dpd
'bla'
如果您只添加其余参数,您的程序会变得更加简单:
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--ifile')
parser.add_argument('-o', '--ofile')
parser.add_argument('-d', '--dpd')
print(f'dpd: {args.dpd}')
print(f'input: {args.ifile}')
print(f'output: {args.ofile}')
您也可以获得开箱即用的自动退出帮助 arg。
您还可以指定哪些参数是必需的,哪些是可选的,设置默认值等等。
你应该使用 argparse
,它比 getopt
更简单,也更强大。
但问题是你忘记声明 -d
作为一个选项:
opts, args = getopt.getopt(argv,"hi:o:<b>d:</b>",["ifile=","ofile=","dpd="])
我正在尝试
import sys, getopt
def main(argv):
inputfile = ''
outputfile = ''
dpd = ''
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile=","dpd="])
print(opts)
for opt, arg in opts:
print(opt)
if opt == '-h':
print ('test.py -i <inputfile> -o <outputfile>')
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
elif opt in ("-d","--dpd"):
dpd = arg
print ('Input file is ', inputfile)
print ('Output file is ', outputfile)
print ('DPD', dpd)
if __name__ == "__main__":
main(sys.argv[1:])
and 运行 with python3 demo.py -i 65 -o ale -d 45
但它给出错误
getopt.GetoptError: 选项 -d 无法识别
我想传递 6 pass 参数我该怎么做?
在 Python 中有一个内置的 library。我强烈建议您使用它 - 开箱即用,错误信息会更丰富。
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-d', '--dpd')
>>> args = parser.parse_args(['-d', 'bla'])
>>> args.dpd
'bla'
如果您只添加其余参数,您的程序会变得更加简单:
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--ifile')
parser.add_argument('-o', '--ofile')
parser.add_argument('-d', '--dpd')
print(f'dpd: {args.dpd}')
print(f'input: {args.ifile}')
print(f'output: {args.ofile}')
您也可以获得开箱即用的自动退出帮助 arg。
您还可以指定哪些参数是必需的,哪些是可选的,设置默认值等等。
你应该使用 argparse
,它比 getopt
更简单,也更强大。
但问题是你忘记声明 -d
作为一个选项:
opts, args = getopt.getopt(argv,"hi:o:<b>d:</b>",["ifile=","ofile=","dpd="])