字符串格式函数不解析我的斜杠字符?

时间:2015-12-03 19:46:13

标签: python wget

我正在做一个小的python脚本来执行wget调用,但是当我替换包含url / ip地址的字符串并且它将被赋予我的“wget”字符串

import os
import sys 

usr = sys.argv[1]
pswd = sys.argv[2]
ipAddr = sys.argv[3]

wget = "wget  http://{IPaddress}"
wget.format(IPaddress=ipAddr)
print "The command wget is %s" %wget

os.system(wget)

如果我运行该脚本,我得到下面的代码段,我知道wget失败了,因为变量ipAddr没有替换IPaddress模式,所以我猜这个问题与url中的斜杠有关。我的问题是为什么不替换这种模式?

python test.py 1 2  www.website.org  The command wget is wget  http://{IPaddress}

--2015-12-03 20:26:11--  http://%7Bipaddress%7D/

Resolving {ipaddress} ({ipaddress})... failed: Name or service not known.

2 个答案:

答案 0 :(得分:3)

您没有将format电话的结果分配给任何内容 - 您只是将其丢弃。试试这个:

wget = "wget  http://{IPaddress}"
wget = wget.format(IPaddress=ipAddr)
print "The command wget is %s" %wget

os.system(wget)

或者,这似乎有点清洁:

wget = "wget  http://{IPaddress}".format(IPaddress=ipAddr)
print "The command wget is %s" %wget

os.system(wget)

答案 1 :(得分:1)

您需要像这样格式化wget字符串。

import os
import sys 

usr = sys.argv[1]
pswd = sys.argv[2]
ipAddr = sys.argv[3]

wget = "wget http://{IPaddress}".format(IPaddress=ipAddr)
print "The command wget is %s" % wget

os.system(wget)

.format()不会修改字符串,它会返回已修改字符串的副本,因此在原始脚本中,wget.format(IPaddress=ipAddr)的值实际上从未实际分配给任何变量和内容wget变量保持不变