gpt4 book ai didi

python - 从命令行python获取参数

转载 作者:行者123 更新时间:2023-11-28 19:40:36 30 4
gpt4 key购买 nike

我正在尝试从命令行获取三个参数:

-o (for outputfile) -k (number of clusters) -l (data to be clustered)

所以我写了这个。

def get_input():
print 'ARGV :', sys.argv[1:]

options, remainder = getopt.getopt(sys.argv[1:], 'o:v:k:l', ['output=',
'verbose',
'k_clust=',
'limit='])
print "options ",options
file_flag , k_flag, count_flag = False, False,False
for opt, arg in options:
print opt
if opt in ('-o', '--output'):
print "here ", opt, arg
output_filename = arg
o_flag = True

if opt in ('-v', '--verbose'):
verbose = True
if opt == '--version':
version = arg

if opt in ('-k','--k_clust'):
print "here", opt, arg
k_clust = arg
k_flag = True

if opt in ('-l','--limit'):
kcount = arg
assert kcount!=0 and kcount!= ''
print "limit ", arg
count_flag = True
if k_flag == False:
sys.exit(" no cluster specified, will be exiting now")
if o_flag == False:
print "using default outfile name ",output_filename
if count_flag == False:
kcount = 10000000


return output_filename, k_clust,kcount

除 -l 标志外,一切正常所以如果我的命令行命令是这样的:

$python foo.py -o foo.txt -k 2 -l 2

打印 argv 打印

ARGV      : ['-o', 'demo.txt', '-k', '2', '-l', '2']

但选项是:

options  [('-o', 'demo.txt'), ('-k', '2'), ('-l', '')]

请注意,“l”字段中没有任何内容被解析。我做错了什么?谢谢

最佳答案

getopt 是一个相当古老的模块。如果你有 Python2.7,使用 argparse .如果你的 Python 版本稍旧 >= 2.3,你仍然可以 install argparse :

import argparse
parser=argparse.ArgumentParser()
parser.add_argument('-o', help = 'outputfile')
parser.add_argument('-k', help = 'number of clusters')
parser.add_argument('-l', help = 'data to be clustered')
args=parser.parse_args()
print(args)

运行

test.py -o foo.txt -k 2 -l 2

产量

Namespace(k='2', l='2', o='foo.txt')

关于python - 从命令行python获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9039320/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com