python - 编解码器无法解码字节 0x81
问题描述
我有这个简单的代码:
file = open(filename, "r", encoding="utf-8")
num_lines = sum(1 for line in open(filename))
我只是想获取文件中的行数。但是我不断收到此错误。我正在考虑跳过 Python 并在 C# 中执行它;-)
任何人都可以帮忙吗?我在搜索错误后添加了“utf-8”并阅读它应该可以修复它。该文件只是一个简单的文本文件,而不是图像。虽然文件很大。它实际上是一个 CSV 字符串,但我只想在开始处理它之前了解行数。
非常感谢。
in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 4344:
character maps to <undefined>
解决方案
这似乎是一个编码问题。
在您的示例代码中,您打开文件两次,第二次不包括编码。
试试下面的代码:
file = open(filename, "r", encoding="utf-8")
num_lines = sum(1 for line in file)
或者(最近的):
with open(filename, "r", encoding="utf-8") as file:
num_lines = sum(1 for line in file)
推荐阅读
- java - @MockBean 在运行多个 Spring Boot 测试时在 JMS 侦听器中使用不同的实例
- javascript - 如何在每次循环迭代期间更新一个单独的变量并将其添加到另一个变量中?(运行计算器迭代问题)
- dll - 为什么 ntdll.dll 为 Debug 构建加载良好,但在使用 Qt Network 模块的 C++ 应用程序中运行 Release 构建时崩溃?
- git - 了解变基 -- 继续
- asp.net - Azure AD 使用 OpenIdConnect (ASP .NET) 在 Docker 容器内重定向 URI HTTP 而不是 HTTPS
- java - Java 扫描器 - 循环直到用户提供正确的输入
- java - 返回带有文件源的对象流
- r - 从一组所有可能的组合中抽取 10 个项目中的 3 个,如何获取每个组合对应的未选中项目?
- python - 如何生成身份验证令牌以限制外部查询对我的服务器的访问
- github - 您无权在 Github 上推送。您想创建一个分叉并改为推送它吗