python引用文件数据出错

import requests

url = 'http://www.example.com/Login/'
filename = 'user.txt'
with open(filename) as file_object:
    for user in file_object:
        data = user.rstrip()
        response = requests.post(url,data=data)
        if '登录成功' in response.text:
            break
        print(response.request.body)
        print(response.text)

#以下是txt文件内容
#'{"LoginID": "abcc", "Password": "a123456"}'
#'{"LoginID": "123456", "Password": "123456"}'
#'{"LoginID": "xyz", "Password": "a654321"}'

运行出错,登录ID为空,想问下是哪里有问题,谢谢

引用GPT
这段代码存在几个问题。首先,打开文件时需要指定读取模式(mode)为'r',即使用open(filename, 'r')。其次,在请求中,参数data应该是一个字典而不是一个字符串,所以你需要使用json模块将文本数据转换为字典形式。最后,.rstrip()方法只能去除字符串末尾的空白字符,这里你需要使用.strip()方法来去除字符串两端的空白字符。

以下是修改后的代码:

import requests
import json

url = 'http://www.example.com/Login/'
filename = 'user.txt'

with open(filename, 'r') as file_object:
    for user in file_object:
        data = json.loads(user.strip())  # 将文本数据转换为字典形式
        response = requests.post(url, data=data)
        if '登录成功' in response.text:
            break
        print(response.request.body)
        print(response.text)

请确保在运行代码之前安装了 requestsjson 模块。另外,对于登录部分的实现,建议在循环内增加合适的退出条件,避免出现无限循环。

data = eval(eval(user.strip()))

使用json.loads报错,用以上代码替换解决,想问下为何要用两个eval

【以下回答由 GPT 生成】

问题出现在将文件内容作为Post请求的参数发送。在代码中,requests.post()方法以data参数发送数据。然而,该参数需要一个字典类型的值而非字符串。

为了解决这个问题,你可以将data参数改为json参数,并将输入的数据转换成字典类型。

请用以下代码替换你的代码:

import requests
import json

url = 'http://www.example.com/Login/'
filename = 'user.txt'
with open(filename) as file_object:
    for user in file_object:
        data = user.rstrip()
        payload = {'data': data}  # 将数据转换为字典类型
        response = requests.post(url, json=payload)  # 使用json参数发送数据
        if '登录成功' in response.text:
            break
        print(response.request.body)
        print(response.text)

这样做会将数据转换成JSON格式,并使用json参数将其作为请求正文发送。这样,你就可以成功发送数据到目标URL了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^