当前位置: 首页 > 面试题库 >

IndentationError:意外的缩进错误

慕阳文
2023-03-14
问题内容

我是Python的新手,正在收到此错误:

Traceback (most recent call last):
  File "/usr/local/bin/scrapy", line 4, in <module>
    execute()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/cmdline.py", line 130, in execute
    _run_print_help(parser, _run_command, cmd, args, opts)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/cmdline.py", line 96, in _run_print_help
    func(*a, **kw)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/cmdline.py", line 136, in _run_command
    cmd.run(args, opts)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/commands/crawl.py", line 42, in run
    q = self.crawler.queue
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/command.py", line 31, in crawler
    self._crawler.configure()
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/crawler.py", line 36, in configure
    self.spiders = spman_cls.from_settings(self.settings)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/spidermanager.py", line 33, in from_settings
    return cls(settings.getlist('SPIDER_MODULES'))
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/spidermanager.py", line 23, in __init__
    for module in walk_modules(name):
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/utils/misc.py", line 65, in walk_modules
    submod = __import__(fullpath, {}, {}, [''])
  File "/my_crawler/empt/empt/spiders/empt_spider.py", line 59
    check_exists_sql = "SELECT * FROM LINKS WHERE link = '%s' LIMIT 1" % item['link']
    ^
IndentationError: unexpected indent

在这段代码上:

def parse_item(self, response):
    hxs = HtmlXPathSelector(response)
    sites = hxs.select('//a[contains(@href, ".mp3")]/@href').extract()
    items = [ ]

    #for site in sites:
        #link = site.select('a/@href').extract()
        #print site
    for site in sites:
        item = EmptItem()
        item['link'] = site #site.select('a/@href').extract()

        #### DB INSERT ATTEMPT ###
        #MySQL Test

        #open db connection
        db = MySQLdb.connect("localhost","root","str0ng","TESTDB")

        #prepare a cursor object using cursor() method
        cursor = db.cursor()

        #see if any links in the DB match the crawled link
        check_exists_sql = "SELECT * FROM LINKS WHERE link = '%s' LIMIT 1" % item['link']

        cursor.execute(check_exists_sql)

        if cursor.rowcount = 0:
            #prepare SQL query to insert a record into the db.
            sql = "INSERT INTO LINKS ( link ) VALUES ( '%s')" % item['link']

            try:
                #execute the sql command
                cursor.execute(sql)
                #commit your changes to the db
                db.commit()
            except:
                #rollback on error
                db.rollback()

                #fetch a single row using fetchone() method.
                #data = cursor.fetchone()

                #print "Database version: %s " % data

            #disconnect from server
            db.close()

            ### end mysql

        items.append(item)
    return items​

问题答案:

尽管缩进错误在StackOverflow页面上很明显,但它们可能不在您的编辑器中。您在这里混合使用不同的缩进类型,1、4和8个空格。根据PEP8,您应始终使用四个空格进行缩进。您还应该避免混用制表符和空格。

我还建议您尝试使用‘
-tt‘命令行选项
来运行脚本,以确定何时意外混合使用制表符和空格。当然,任何体面的编辑器都可以突出显示制表符和空格(例如Vim的'list'option)。



 类似资料:
  • 我不知道我犯了什么错误。只有标签,没有空间。我从本教程中获取了这段代码,http://cloudacademy.com/blog/google-prediction-api/.(我正在使用PyCharm进行开发)。 错误消息 /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/ZERO/GooglePredi

  • 问题内容: 这是代码: 这是错误: 我的代码有什么问题? 问题答案: 您混用了制表符和空格。这可能会导致一些令人困惑的错误。 我建议使用 唯一的 标签或 仅 缩进空间。 通常只使用空格是较容易的选择。大多数编辑器都有一个选项,可以将制表符自动转换为空格。如果您的编辑器具有此选项,请将其打开。 顺便说一句,您的代码比需要的更为冗长。代替这个: 只是这样做: 您在此行上似乎也有一个错误: 我将让您找出

  • 这是我的model.py代码: 当我运行以下命令时: 这给我以下错误: mjrulesamrat@mjrulesamrat-Lenovo-G570:~/django\u local/first\u web$python manage.py运行服务器验证模型。。。 Traceback(最近一次调用)启动的线程中未处理的异常:文件"/usr/local/lib/python2.7/dist-包/dja

  • 我想创建一个用户信息命令,但我仍然得到一个错误embed.set_author(name=f用户信息-{成员})索引错误:意外的缩进我不知道这是否足以理解我的错误在哪里(我只是开始编码) @客户。command()异步定义信息(ctx,成员:discord.member):

  • 问题内容: 这个问题已经在这里有了答案 : 我收到一个IndentationError。我如何解决它? (4个答案) 去年关闭。 我有一段简单的代码,我不明白我的错误来自哪里。解析器在第5行(if语句)使用意外缩进对我咆哮。有人在这里看到问题吗?我不。 问题答案: 如果您只是复制并粘贴了代码,则可以在语句所在的行上使用一个选项卡。Python将制表符解释为8个空格而不是4个空格。永远不要将制表符与

  • 如本文所述,缩进有一个ESLint属性,名为。示例如下所示: 或对于选项卡式缩进: 但是,如果我将这个确切的代码粘贴到我的文件中,VS Code将显示为错误: ESLint:. eslintrc中的ESLint配置无效:-意外的顶级属性"indent"...有关详细信息,请参阅ESLint输出通道。 我以前拥有的文件已经有很多规则,并且没有打印出错误。如果我将添加到该列表中,或者单独添加,它将失败