我正在尝试使用choice从此列表中选择一个随机URL,但它不起作用。这是我的代码:
import urllib, urllib2, sys
num = sys.argv[1]
print 'Started'
phones = [
'http://1.1.1.6/index.htm,'
'http://1.1.1.5/index.htm,'
'http://1.1.1.4/index.htm,'
'http://1.1.1.3/index.htm,'
'http://1.1.1.2/index.htm,'
'http://1.1.1.1/index.htm'
]
from random import choice
data = urllib.urlencode({"NUMBER":num, "DIAL":"Dial", "active_line":1})
while 1:
for phone in phones:
urllib2.urlopen(choice(phone),data) # make call
urllib2.urlopen(choice(phone)+"?dialeddel=0") # clear
logs
这是我得到的错误
File "p.py", line 21, in ?
urllib2.urlopen(choice(phone),data) # make call
File "/usr/lib64/python2.4/urllib2.py", line 130, in urlopen
return _opener.open(url, data)
File "/usr/lib64/python2.4/urllib2.py", line 350, in open
protocol = req.get_type()
File "/usr/lib64/python2.4/urllib2.py", line 233, in get_type
raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type: 5
感谢任何帮助。谢谢!
答案 0 :(得分:4)
你的逗号在你的字符串里面。因此,您的手机变量是一个大型字符串的列表。您的随机选择是从该字符串中为您提供单个字符。将其更改为:
phones = [
'http://1.1.1.6/index.htm',
'http://1.1.1.5/index.htm',
'http://1.1.1.4/index.htm',
'http://1.1.1.3/index.htm',
'http://1.1.1.2/index.htm',
'http://1.1.1.1/index.htm',
]
此外,您不应该通过手机进行迭代,而只需使用random.choice(phones)
选择手机。
另外,您为两个URL调用选择了一个不同的随机电话,我猜这不是您想要的。这是一个完整的重构代码。
import urllib, urllib2, sys, random
phones = [
'http://1.1.1.6/index.htm',
'http://1.1.1.5/index.htm',
'http://1.1.1.4/index.htm',
'http://1.1.1.3/index.htm',
'http://1.1.1.2/index.htm',
'http://1.1.1.1/index.htm',
]
num = sys.argv[1]
data = urllib.urlencode({"NUMBER": num, "DIAL": "Dial", "active_line": 1})
while 1:
phone = random.choice(phones)
urllib2.urlopen(phone, data) # make call
urllib2.urlopen(phone + "?dialeddel=0") # clear logs
答案 1 :(得分:0)
您可以尝试获取随机索引
import random
phones = [
'http://1.1.1.6/index.htm',
'http://1.1.1.5/index.htm',
'http://1.1.1.4/index.htm',
'http://1.1.1.3/index.htm',
'http://1.1.1.2/index.htm',
'http://1.1.1.1/index.htm',
]
index random.randrange(0, len(phones)-1)
phones[index]