argparse连接cli选项

时间:2011-01-07 22:13:29

标签: python argparse

刚开始学习python并将命令行选项传递给python脚本。我正在尝试连接两个或多个参数并将其传递给字符串变量

如,

myscript.py http://www.domain.com 1234

将其放入名为url的字符串变量中,该变量的值应为“http://www.domain.com:1234

我不太确定如何存档。使用raw_input和一些字符串操作非常简单,但我想知道是否可以使用argparse完成此操作。

6 个答案:

答案 0 :(得分:7)

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('server') # first positional argument
parser.add_argument('port') # second positional argument
args = parser.parse_args()

url = '%s:%s' % (args.server, args.port)
print url

答案 1 :(得分:2)

argparse是解决它的一种方法,但是如果你刚刚学习(YMMV)可能会有点过分。

如果导入sys模块,传递给您的命令行参数可在sys.argv

的字符串列表中找到
import sys
if len(sys.argv) < 3:
    print "Not enough args!"
    sys.exit(0)
# sys.argv[0] is the name of your script, the rest are parameters
url = "%s:%s" % (sys.argv[1], sys.argv[2])
print url

答案 2 :(得分:1)

为什么不这样做,

argstring = ':'.join(args[1:])

答案 3 :(得分:0)

如果您想从命令行输入获得带有字符串http://www.domain.com:1234的变量,请执行以下操作:

if len(sys.argv) >= 3:
    result = '%s:%s' % tuple(sys.argv[1:3])

答案 4 :(得分:0)

谢谢Amber,

这正是我所寻找的

#!/usr/bin/python

from urllib import urlopen
import argparse

usage='will be using it later'

parser=argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description=usage, add_help=False)
parser.add_argument('link')
parser.add_argument('port')
args = parser.parse_args()

url = '%s:%s' % (args.link, args.port)
link = urlopen(url)
content=link.read()

print(content)

与这一行“url ='%s:%s'%(args.link,args.port)”有点混淆 该行是否使用括号中的参数并将其添加到字符串变量'url'?

杰克

答案 5 :(得分:0)

  

对这一行感到有些困惑   “url ='%s:%s'%(args.link,   args.port)“那条线是否采用了   括号中的参数并将其添加到   字符串变量'url'?

实际上不再推荐这种格式了。 (见http://docs.python.org/tutorial/inputoutput.html)。使用当前推荐的方法执行相同操作的最简单方法是: -

url = '{0}:{1}'.format( args.link , args.port )

其中{n}是格式(变量)中的第n个变量。此方法将始终将参数转换为字符串。

使用%s的旧方法也是如此; 's'意思是将一个参数转换为一个字符串,但是字符串中必须有与'%s'标记完全一样的字符串,因为在字符串后面的%符号后面有参数。不要担心这一点,但如果你正在学习,请使用.format()。