python 在程序中传递命令行参数
python passing command line argument with-in program
我有下面的 python 程序从命令行获取参数。
import argparse
import sys
choice=['orange','apple', 'grapes', 'banna']
def select():
parser = argparse.ArgumentParser(prog='one', description='name test')
parser.add_argument(
'fname',
action="store",
type=str,
choices=choice,
help="furits name")
args = parser.parse_args(sys.argv[1:2])
print 'selected name {0}\n'.format(args.fname)
if __name__ == '__main__':
select()
这有效
python s.py apple
selected name apple
如何在主函数中内联参数。我试过了,但没用。
改主线这个
if __name__ == '__main__':
sys.argv[0]='apple'
select()
低于错误。
usage: one [-h] {orange,apple,grapes,banna}
one: error: too few arguments
我怎样才能在争论中做到这一点?
谢谢
-SR
您的索引有误 sys.argv[0]
将是 python 脚本的路径。你想要的是:
if __name__ == '__main__':
if len(sys.argv) == 1:
sys.argv.append("apple")
select()
但是,这是一种奇怪的做事方式。想了想,我想到了这个:
choice=['orange','apple', 'grapes', 'banna']
def select():
parser = argparse.ArgumentParser(prog='one', description='name test')
parser.add_argument(
'fname',
nargs='?',
default='apple',
action="store",
type=str,
choices=choice,
help="furits name")
args = parser.parse_args(sys.argv[1:2])
print 'selected name {0}\n'.format(args.fname)
if __name__ == '__main__':
select()
请注意 nargs='?'
和 default='apple'
对 add_argument() 调用的补充。如果没有提供参数,这些使参数可选并将默认值设置为 "apple"。
我有下面的 python 程序从命令行获取参数。
import argparse
import sys
choice=['orange','apple', 'grapes', 'banna']
def select():
parser = argparse.ArgumentParser(prog='one', description='name test')
parser.add_argument(
'fname',
action="store",
type=str,
choices=choice,
help="furits name")
args = parser.parse_args(sys.argv[1:2])
print 'selected name {0}\n'.format(args.fname)
if __name__ == '__main__':
select()
这有效
python s.py apple
selected name apple
如何在主函数中内联参数。我试过了,但没用。
改主线这个
if __name__ == '__main__':
sys.argv[0]='apple'
select()
低于错误。
usage: one [-h] {orange,apple,grapes,banna} one: error: too few arguments
我怎样才能在争论中做到这一点?
谢谢 -SR
您的索引有误 sys.argv[0]
将是 python 脚本的路径。你想要的是:
if __name__ == '__main__':
if len(sys.argv) == 1:
sys.argv.append("apple")
select()
但是,这是一种奇怪的做事方式。想了想,我想到了这个:
choice=['orange','apple', 'grapes', 'banna']
def select():
parser = argparse.ArgumentParser(prog='one', description='name test')
parser.add_argument(
'fname',
nargs='?',
default='apple',
action="store",
type=str,
choices=choice,
help="furits name")
args = parser.parse_args(sys.argv[1:2])
print 'selected name {0}\n'.format(args.fname)
if __name__ == '__main__':
select()
请注意 nargs='?'
和 default='apple'
对 add_argument() 调用的补充。如果没有提供参数,这些使参数可选并将默认值设置为 "apple"。