繁体   English   中英

argparse连接cli选项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM