Python 索引器:列表索引超出范围123
下面是一个脚本:Python 索引器:列表索引超出范围123,python,indexing,runtime-error,Python,Indexing,Runtime Error,下面是一个脚本: import requests import subprocess import json import sys import threading import time from Queue import Queue numberOfViewers = int(sys.argv[1]) builderThreads = int(sys.argv[2]) startTime = time.time() numberOfSockets = 0 concurrent = 25 u
import requests
import subprocess
import json
import sys
import threading
import time
from Queue import Queue
numberOfViewers = int(sys.argv[1])
builderThreads = int(sys.argv[2])
startTime = time.time()
numberOfSockets = 0
concurrent = 25
urls = []
urlsUsed = []
def getURL(): # Get tokens
output = subprocess.Popen(["livestreamer", "twitch.tv/CHANNEL_NAME", "-j"], stdout=subprocess.PIPE).communicate()[0]
return json.loads(output)['streams']['worst']['url'] # Parse json and return the URL parameter
def build(): # Builds a set of tokens, aka viewers
global numberOfSockets
global numberOfViewers
while True:
if numberOfSockets < numberOfViewers:
numberOfSockets += 1
print "Building viewers " + str(numberOfSockets) + "/" + str(numberOfViewers)
urls.append(getURL())
def view(): # Opens connections to send views
global numberOfSockets
while True:
url=q.get()
requests.head(url)
if (url in urlsUsed):
urls.remove(url)
urlsUsed.remove(url)
numberOfSockets -= 1
else:
urlsUsed.append(url)
q.task_done()
if __name__ == '__main__':
for i in range(0, builderThreads):
threading.Thread(target = build).start()
while True:
while (numberOfViewers != numberOfSockets): # Wait until sockets are built
time.sleep(1)
q=Queue(concurrent*2)
for i in range(concurrent):
try:
t=threading.Thread(target=view)
t.daemon=True
t.start()
except:
print 'thread error'
try:
for url in urls:
print url
q.put(url.strip())
q.join()
except KeyboardInterrupt:
sys.exit(1)
导入请求
导入子流程
导入json
导入系统
导入线程
导入时间
从队列导入队列
numberOfViewers=int(sys.argv[1])
builderThreads=int(sys.argv[2])
startTime=time.time()
numberOfSockets=0
并发=25
URL=[]
urlsUsed=[]
def getURL():#获取令牌
output=subprocess.Popen([“livestreamer”、“twitch.tv/CHANNEL_NAME”、“-j”],stdout=subprocess.PIPE)。communicate()[0]
返回json.loads(output)['streams']['best']['url']#解析json并返回url参数
def build():#构建一组令牌,也称为查看器
全局套接字数
全球观众人数
尽管如此:
如果numberOfSockets
这里有一个错误:
Traceback (most recent call last):
File "LINKTOFILEHERE", line 9, in <module>
numberOfViewers = int(sys.argv[1])
IndexError: list index out of range
回溯(最近一次呼叫最后一次):
文件“LINKTOFILEHERE”,第9行,在
numberOfViewers=int(sys.argv[1])
索引器:列表索引超出范围
这是因为这是一个需要命令行参数的脚本:
python Twitch.py 10 10
^ Number of threads
^ Number of viewers
^ Name of file
该脚本要求您传递命令行参数:
python Twitch.py 10 20
是的,有一个脚本和一个错误,那又怎样?是的,但它说“syntax error”是的,但它说“syntax error”@user3035522正如您自己所看到的,这都在一个单独的文件中