[英]argparse concatenate cli options
刚开始学习python并尝试将命令行选项传递给python脚本。 我正在尝试连接两个或多个参数,并将其传递给字符串变量,
例如,
myscript.py http://www.domain.com 1234
将其放入名为url
的字符串变量中,该变量的值应为“ http://www.domain.com:1234 ”
我不确定如何将其存档。 用raw_input
和一些字符串操作很简单,但是我想知道是否也可以用argparse
完成。
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
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
为什么不呢
argstring = ':'.join(args[1:])
如果要从命令行输入中获取带有字符串http://www.domain.com:1234的变量,请执行以下操作:
if len(sys.argv) >= 3:
result = '%s:%s' % tuple(sys.argv[1:3])
谢谢琥珀,
那正是我想要的
#!/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'中?
插口
只是与此行“ url ='%s:%s'%(args.link,args.port)”相混淆?该行是否将方括号中的参数添加到字符串变量'url'中?
实际上,不再建议使用这种格式。 (请参阅http://docs.python.org/tutorial/inputoutput.html )。 使用当前推荐的方法执行此操作的最简单方法是:-
url = '{0}:{1}'.format( args.link , args.port )
其中{n}是format(variables)中的第n个变量。 此方法将始终为您将参数转换为字符串。
使用%s的旧方法执行相同的操作; “ s”的含义是将参数转换为字符串,但是字符串中的“%s”标志必须与字符串后的%符号后面的参数一样多。 不用担心,但是,如果您正在学习,请使用.format()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.