2014-01-20 2 views
2

Я получаю сообщение об ошибке с помощью этого сценария, когда я запускаю его Кроме того, я должен упомянуть, я только начал изучать PythonPython запрашивает пакет сценарий ошибки

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/ispazzcraft", "-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) 

Здесь ошибка

Traceback (most recent call last): 
    File "C:\Python27\Scripts\test.py", line 9, in <module> 
    numberOfViewers = int(sys.argv[1]) 
IndexError: list index out of range 

Кто-то еще сказал, что они исправили его, установив пакет запросов, и я сделал, но я все еще получаю эту ошибку. Также я посмотрел, и у меня есть последняя версия пакета запросов

+0

sys.argv список аргументов отправляется через командную строку. Если вы получаете эту ошибку, это означает, что вы не предоставили достаточно аргументов. Вам нужно запустить этот скрипт из командной строки, например: «python script.py 12 19». – jayelm

ответ

1

Вы должны предоставить 2 параметры командной строки (номера), чтобы использовать этот скрипт:

numberOfViewers = int(sys.argv[1]) 
builderThreads = int(sys.argv[2]) 

, например, если имя сценария test.py:

test.py 1 2 
Смежные вопросы