保存响应中的unicode文本,而不将其编码为fi

2024-10-01 00:28:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过网络抓取从路由器下载配置文件。我想实现的程序是:

  1. 将配置文件保存到磁盘中
  2. 发送出厂重置
  3. 加载以前下载的配置文件

到目前为止,我有以下代码:

with requests.Session() as s:  # To login into the modem
    pagePostBackUp = 'https://192.168.1.1/goform/BackUp'
    s.post(urlLogin, data=loginCredentials, verify=False, timeout=5)
    dataBackUp = {'dir': 'admin/','file': 'cmconfig.cfg'}
    resultBackUp = s.post(pagePostBackUp, data=dataBackUp, verify=False, timeout=10)
    print(resultBackUp.text)

最后一行是我要保存到文件中的内容。但是,当我尝试使用此代码时:

f = open('/Users/user/Desktop/file.cfg', 'w')

引发ascii编解码器无法对字符进行编码的错误。例如,如果使用encode='utf16'保存文件,则与最初手动下载的文件不同

所以,问题是,我如何用路由器通过网络给我的相同编码保存这个文件(作为unicode)。文件的内容如下所示:

�����G���M��� ������Z������ofpqJ U\V、.o/����采埃孚��v���~W3=,�D} );Y�热释光�希杰


Tags: 文件代码网络falsedata配置文件timeout路由器
1条回答
网友
1楼 · 发布于 2024-10-01 00:28:35

将代码的最后一行更改为以下内容:

    with open('/Users/user/Desktop/file.cfg', 'wb') as f:
        f.write(resultBackUp.content)

这将有效负载视为数据(bytes),而不是文本:文件以二进制模式打开,内容按原样处理。 没有编码/解码发生

相关问题 更多 >