python代码中的错误

python代码中的错误,python,python-3.x,syntax-error,Python,Python 3.x,Syntax Error,我的pythoncod不断地给我诸如缩进和语法之类的错误,我一直在修复它们,但都没有用。下面是我正在使用的代码,我仍然不确定我做错了什么(顺便说一句,这只是因为我和一个朋友就我不能做的事情发生了争论) 导入请求 导入子流程 导入json 导入系统 导入线程 导入时间 从队列导入队列 numberOfViewers=int(sys.argv[1]) builderThreads=int(sys.argv[2]) startTime=time.time() numberOfSockets=0 并发=

我的pythoncod不断地给我诸如缩进和语法之类的错误,我一直在修复它们,但都没有用。下面是我正在使用的代码,我仍然不确定我做错了什么(顺便说一句,这只是因为我和一个朋友就我不能做的事情发生了争论)

导入请求
导入子流程
导入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
您需要缩进代码。Python不喜欢这样做,例如:

def main():
print "Hello World!"
Python需要缩进(我认为是4个空格)


有语法和缩进错误的行号是多少?顺便说一下,您需要缩进代码。Python不喜欢这样做,例如:

def main():
print "Hello World!"
Python需要缩进(我认为是4个空格)


有语法和缩进错误的行号是多少?顺便说一下,Python使用缩进来定义块,而不是{}

此外,您还应该在所有文档期间继续使用第一个缩进格式。这意味着,如果您从选项卡开始,您必须始终使用选项卡,即使空间在视觉上看起来相同,如果您使用的是4个空间,则以后在代码中无法更改选项卡或更多空间

您提到的错误通常是因为您从internet粘贴了代码,而它使用的是选项卡,而您使用的是空格,反之亦然


我建议重新索引整个代码,因为它很短

Python使用缩进来定义块,而不是{}

此外,您还应该在所有文档期间继续使用第一个缩进格式。这意味着,如果您从选项卡开始,您必须始终使用选项卡,即使空间在视觉上看起来相同,如果您使用的是4个空间,则以后在代码中无法更改选项卡或更多空间

您提到的错误通常是因为您从internet粘贴了代码,而它使用的是选项卡,而您使用的是空格,反之亦然


我建议重新索引整个代码,因为它很短

您的代码中有几个错误:

1:
打印:
如果您正在使用Python3-

print语句已替换为print()函数,具有 关键字参数来替换旧的大多数特殊语法 打印报表

更多

2:缩进: 如果您遇到此错误:
缩进错误:应为缩进块
这意味着你的压痕不合适。作为一种解释语言,适当的缩进对于Python来说是必要和重要的:

逻辑字符串开头的前导空格(空格和制表符) line用于计算线的缩进级别,在 turn用于确定语句的分组

有关更多信息,请参阅

固定代码示例:

我为您修复了这些错误,下面是它的外观:

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)

您的代码中有几个错误:

1:
打印:
如果您正在使用Python3-

print语句已替换为print()函数,具有 关键字参数来替换旧的大多数特殊语法 打印报表

更多

2:缩进: 如果您遇到此错误:
缩进错误:应为缩进块
这意味着你的压痕不合适。作为一种解释语言,适当的缩进对于Python来说是必要和重要的:

逻辑字符串开头的前导空格(空格和制表符) line用于计算线的缩进级别,在 turn用于确定语句的分组

有关更多信息,请参阅

固定代码示例:

我为您修复了这些错误,下面是它的外观:

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)

嗨@flamelier欢迎来到StackOverflow。请发布您的错误以改进您的帖子。那边,伙计
$ sudo pip install requests --upgrade