当前位置: 首页 > 知识库问答 >
问题:

在Python的gzip中设置“编码”。open()似乎不起作用

越伟泽
2023-03-14

即使我尝试在python的gzip.open()中指定编码,它似乎总是使用cp1252.py来编码文件的内容。我的代码:

with gzip.open('file.gz', 'rt', 'cp1250') as f:
    content = f.read()

响应:

文件“C:\Python34\lib\encodings\cp1252.py”,第23行,在decode中返回codecs.charmap_decode(input,self.errors,decoding_table)[0]UnicodeDecodeError:'charmap'codecode无法解码位置52893中的字节0x8f:字符映射到未定义的

共有1个答案

通博实
2023-03-14

格拉链定义为

gzip.open(文件名,模式='rb',压缩级别=9,编码=无,错误=无,换行符=无)

因此,gzip.open(“文件.gz”、“rt”、“cp1250”) 会向它发送以下参数: - 文件名 = '文件.gz' - 模式 = 'rt' - 压缩级别 = 'cp1250'

这显然是错误的,因为意图是使用'cp1250'编码。编码参数可以作为第四个位置参数或作为关键字参数发送:

gzip.open('file.gz', 'rt', 5, 'cp1250')  # 4th positional argument

gzip.open('file.gz', 'rt', encoding='cp1250') # keyword argument

Python 2版本的gzip。open不接受encodingargument,也不接受文本模式,因此必须在读取数据后明确进行解码:

with gzip.open('file.gz', 'rb') as f:
    data = f.read()

decoded_data = data.decode('cp1250')
 类似资料:
  • 我正在使用Vue CLI 3.0。0(rc.10)和am并排运行两个服务器(后端服务器和WDS)。 我跟踪了devServer。Vue CLI文档中的代理说明,用于将代理选项添加到我的。我还按照http代理中间件库的说明补充了以下选项: 我的理解是,选项需要动态地将请求上的头更改为“http://localhost:4000“。但是,来自我的应用程序的请求仍从发送http://localhost:

  • 我有一个工作流,它执行一系列模糊测试,最后计算所有崩溃程序子目录中的文件总数。后来,在另一份工作中,我使用该号码向Slack发送通知。但是,由于某些原因,不会产生任何输出,最重要的是,即使崩溃程序的数量不是零,下一个作业也不会运行! 有人知道我做错了什么吗?谢谢!

  • 我的代码看起来像 我的文件如下所示 当我运行程序时,我看到 我怎样才能修好它呢?

  • 问题内容: 我在使用该功能时遇到了麻烦。 我只需要知道SQL查询是否返回零行。 我已经尝试过以下简单的语句: 类型是哪里。上面的代码似乎不起作用。无论是否为空,它将始终打印该消息。 我检查了SQL查询本身,当存在行时它正确返回了非空结果。 关于如何确定查询是否已返回0行的任何想法?我用谷歌搜索,找不到任何答案。 问题答案: ResultSet.getFetchSize()不返回结果数!从这里: 使

  • 我在Windows上,我已经在环境变量中设置了JDK 1.8的路径。同样在项目结构方面,我已经改变了。我有一个Maven项目。 在命令行中,如果我使用“mvn--version”,我会看到 然而,在IntelliJ中,如果我点击Run按钮,它总是指向JDK 1.7,并抛出一个错误(因为我的maven项目需要java 8)。我该怎么改变呢?谢谢 更新在遵循@BevyQ提示后,我发现Maven run

  • 问题内容: 月格式说明符似乎不起作用。 现在,根据手册,手册: %m =月,十进制数[01,12]。 那么,除了我试图理解我的django __filter查询为什么什么都不返回(输入的日期无效!)的原因之外,我还缺少什么呢?我已经尝试了,但无济于事。 事物,平台,架构等的版本: 问题答案: 您不能将它们与其他格式的代码混合使用,因为如果您在表中查看的话,所链接的%j是十进制数字[001,366]