鱼C论坛

 找回密码
 立即注册
查看: 409|回复: 10

[新人报道] 求助

[复制链接]
发表于 2024-4-15 11:01:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

...

木有对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-15 11:18:22 | 显示全部楼层


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

根据你提供的代码片段,我们可以看到有两个 `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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

...

可否留个邮箱帮看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-15 11:18:41 | 显示全部楼层
一介书生423 发表于 2024-04-15 11:18
可否留个邮箱帮看看


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-15 11:30:57 | 显示全部楼层
一介书生423 发表于 2024-4-15 11:18
可否留个邮箱帮看看

你要先保证你请求下来的数据是对的  然后才能对数据进行清洗
如果你请求下来的数据是空值 或者是错误值   那就没必要进行下一步了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-15 11:47:46 | 显示全部楼层
本帖最后由 jackz007 于 2024-4-15 11:49 编辑
if ['units'] is not None:
        这是什么写法?['units'] 就是一个只有一个字符串元素的列表,这个表达式的值恒为 True!还不如直接这么写:
if True :
        来的更加清楚简单
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

前面几页是对的  到某一页才出现错误  大神能否留个邮箱帮看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

大神能否留个邮箱帮看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可否留个邮箱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 22:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表