添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

我一直得到在赋值前引用局部变量的错误!我如何解决这个问题?

0 人关注

谢谢你抽出时间来帮助我。我正在用django编写一个网络刮削api,但在过去的5天里,我一直得到一个可怕的错误!奇怪的是,在macOS上完全没有错误,当我部署到AWS时,它向我抛出了变量引用错误!ubuntu的python 3.6.8和macOS的python 3.6.6

我已经尝试了不同的方法,但现在我想不出任何方法!在macOS上应该返回的搜刮数据返回得很好,但在ubuntu上,我得到了粉碎!请帮助!"。

data_list = []
div_class = scrape_driver_2.find(class_ = 'c1_t2i')
daraz_products = scrape_driver.find_all(class_ = 'c2prKC')
for data_fragment in daraz_products: # iterate and find all classes 
    data_block = data_fragment.text.strip()  # Convert code to text
    formatted_block = data_block.replace('ADD TO CART', '')
    second_iterated_block = formatted_block.replace('%', '')
    third_iterated_block = second_iterated_block.replace(')Pakistan', ')-Pakistan')
    fourth_iterated_block = third_iterated_block.replace('Pakistan', '-Pakistan')
    data_list.append(fourth_iterated_block)
    high_data = [{"Timestamp": time_stamp,
                  "TS Token": ts_token,
                  "Status": sitrep},
                  data_list] 
return Response({"data": high_data})
engine_initializer.close()

我得到的错误是: UnboundLocalError at /api/big-budget-filter/(未绑定的本地错误)。 本地变量'high_data'在赋值前被引用

5 个评论
这意味着 daraz_products 是空的,因此 high_data 从未被设置。
这可能是 daraz_products 是空的。请务必在你的问题中粘贴完整的错误回溯,这样我们就不必猜测错误发生的位置。
这个完全相同的代码片在macOS上刮开了所有的产品,在ubuntu上这个错误刺穿了我的h311。
@Ali_Rashid: 那么很可能你搜刮的网页是无法访问的,或者为不同的代理渲染不同的内容。
UnboundLocalError at /api/big-budget-filter/ local variable 'high_data' referenced before assignment Django Version: 2.2.5 Exception Type: UnboundLocalError Exception Value: local variable 'high_data' referenced before assignment Exception Location: /home/ubuntu/Exodis-Django/Exodis-Django-
python
django
python-3.x
variables
error-handling
Ali_Rashid
Ali_Rashid
发布于 2019-09-26
1 个回答
tomgalpin
tomgalpin
发布于 2019-09-26
已采纳
0 人赞同

将high_data保持在循环之外,并在返回之前的所有迭代之后设置它。

data_list = []
div_class = scrape_driver_2.find(class_ = 'c1_t2i')
daraz_products = scrape_driver.find_all(class_ = 'c2prKC')
for data_fragment in daraz_products: # iterate and find all classes 
    data_block = data_fragment.text.strip()  # Convert code to text
    formatted_block = data_block.replace('ADD TO CART', '')
    second_iterated_block = formatted_block.replace('%', '')
    third_iterated_block = second_iterated_block.replace(')Pakistan', ')-Pakistan')
    fourth_iterated_block = third_iterated_block.replace('Pakistan', '-Pakistan')
    data_list.append(fourth_iterated_block)
high_data = [{"Timestamp": time_stamp,
                  "TS Token": ts_token,
                  "Status": sitrep},
                  data_list] 
return Response({"data": high_data})

编辑:根据这个帖子的评论,用假数据做了一个简化的例子版本

data_list = []
daraz_products = ["prod1","prod2","prod3"]
for data_fragment in daraz_products:
     data_list.append(data_fragment)