一介书生423 发表于 2024-4-15 11:01:02

求助

while True:
                try:
                  response = requests.post(url, headers=headers, data=data, verify=False)
                  response.json()
                  break
                except:
                  # print("pass2")
                  pass
            if ['units'] is not None:
                for j in response.json()['data']['data']:
                  for m in j['units']:
                     
                        data = {
                        "projectId": i['uuid'],
                        "buildingId": j['id'],
                        "unitId": m['id']
                  }
                  while True:
                        try:
                            response = requests.post(url, headers=headers, data=data, verify=False)
                            response.json()
                            break
                        except:


错误for m in j['units']:
TypeError: 'NoneType' object is not iterable

FishC 发表于 2024-4-15 11:01:21

这个错误是因为变量`j`的值是`None`,而`None`类型是不可迭代的。所以在使用`for`循环遍历`j`时会报错。

要解决这个问题,你可以在遍历`response.json()`之前,添加一个判断语句来检查`response.json()`的返回值是否为`None`。如果为`None`,则跳过当前的循环。

下面是修改后的代码:

while True:
    try:
      response = requests.post(url, headers=headers, data=data, verify=False)
      json_data = response.json()
      if json_data is not None:
            for j in json_data:
                if j is not None:
                  for m in j:
                        data = {
                            "projectId": i,
                            "buildingId": j,
                            "unitId": m
                        }
                        while True:
                            try:
                              response = requests.post(url, headers=headers, data=data, verify=False)
                              response.json()
                              break
                            except:
                              # 处理请求异常的代码
                              pass
      break
    except:
      # 处理请求异常的代码
      pass

希望这个解答对你有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

一介书生423 发表于 2024-4-15 11:17:55

FishC 发表于 2024-4-15 11:01
这个错误是因为变量`j`的值是`None`,而`None`类型是不可迭代的。所以在使用`for`循环遍历`j`时会报错。

...

木有对

FishC 发表于 2024-4-15 11:18:22

一介书生423 发表于 2024-04-15 11:17
木有对

抱歉,我之前的回答可能不够清晰。让我们来重新看一下你的代码和问题。

根据你提供的代码片段,我们可以看到有两个 `for` 循环嵌套在一起,分别是对 `response.json()` 和对 `j` 的遍历。你遇到的错误是 `'NoneType' object is not iterable`,这意味着你正在尝试迭代一个 `None` 对象。

根据你的描述,问题可能出现在 `response.json()` 这一行,因为当请求失败时,`response.json()` 可能返回 `None`。

为了解决这个问题,我们可以先检查 `response.json()` 的返回值,如果为 `None`,则跳过当前循环。修改的代码如下:

while True:
    try:
      response = requests.post(url, headers=headers, data=data, verify=False)
      json_data = response.json()
      if json_data is not None:
            for j in json_data:
                for m in j:
                  data = {
                        "projectId": i,
                        "buildingId": j,
                        "unitId": m
                  }
                  while True:
                        try:
                            response = requests.post(url, headers=headers, data=data, verify=False)
                            response.json()
                            break
                        except:
                            # 处理请求异常的代码
                            pass
      break
    except:
      # 处理请求异常的代码
      pass

这样,在遍历 `response.json()` 之前,我们先检查它的返回值是否为 `None`,如果是,则跳过当前的循环。

希望这次解答对你有所帮助,如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

一介书生423 发表于 2024-4-15 11:18:30

FishC 发表于 2024-4-15 11:01
这个错误是因为变量`j`的值是`None`,而`None`类型是不可迭代的。所以在使用`for`循环遍历`j`时会报错。

...

可否留个邮箱帮看看

FishC 发表于 2024-4-15 11:18:41

一介书生423 发表于 2024-04-15 11:18
可否留个邮箱帮看看

非常抱歉,我是一个人工智能助手,无法提供个人邮件支持。但是,您可以在这里向我提问,并我会尽力帮助您解决您的编程问题。如果您有任何疑问或需要帮助,请随时在这里向我提问。谢谢!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

wp231957 发表于 2024-4-15 11:30:57

一介书生423 发表于 2024-4-15 11:18
可否留个邮箱帮看看

你要先保证你请求下来的数据是对的然后才能对数据进行清洗
如果你请求下来的数据是空值 或者是错误值   那就没必要进行下一步了

jackz007 发表于 2024-4-15 11:47:46

本帖最后由 jackz007 于 2024-4-15 11:49 编辑

if ['units'] is not None:
      这是什么写法?['units'] 就是一个只有一个字符串元素的列表,这个表达式的值恒为 True!还不如直接这么写:
if True :
      来的更加清楚简单

一介书生423 发表于 2024-4-15 11:49:19

wp231957 发表于 2024-4-15 11:30
你要先保证你请求下来的数据是对的然后才能对数据进行清洗
如果你请求下来的数据是空值 或者是错误值...

前面几页是对的到某一页才出现错误大神能否留个邮箱帮看看

一介书生423 发表于 2024-4-15 11:49:39

jackz007 发表于 2024-4-15 11:47
这是什么写法?['units'] 就是一个只有一个字符串元素的列表,这个表达式的值恒为 True!

大神能否留个邮箱帮看看

一介书生423 发表于 2024-4-15 11:55:43

jackz007 发表于 2024-4-15 11:47
这是什么写法?['units'] 就是一个只有一个字符串元素的列表,这个表达式的值恒为 True!还不如 ...

可否留个邮箱
页: [1]
查看完整版本: 求助