刚开始学习python并将命令行选项传递给python脚本。我正在尝试连接两个或多个参数并将其传递给字符串变量
如,
myscript.py http://www.domain.com 1234
将其放入名为url
的字符串变量中,该变量的值应为“http://www.domain.com:1234”
我不太确定如何存档。使用raw_input
和一些字符串操作非常简单,但我想知道是否可以使用argparse
完成此操作。
答案 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()。