1

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

例如,

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

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

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

4

6 回答 6

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
于 2011-01-07T22:22:58.067 回答
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
于 2011-01-07T22:28:00.297 回答
1

为什么不做,

argstring = ':'.join(args[1:])
于 2011-01-07T22:55:31.777 回答
0

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

if len(sys.argv) >= 3:
    result = '%s:%s' % tuple(sys.argv[1:3])
于 2011-01-07T22:35:28.580 回答
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()。

于 2011-01-08T00:14:15.663 回答
0

谢谢琥珀,

这正是我想要的

#!/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' 中?

杰克

于 2011-01-07T23:21:48.317 回答