Python文件读取失败处理与常见编码错误排查

一只小鹿
一只小鹿
发布时间:2026-10-12| 3人浏览过
原创

在Python开发中,文件读取失败通常由编码不匹配或文件类型处理不当引起。本文针对UnicodeDecodeError、二进制文件写入及str()函数误用导致的TypeError进行排查与解决。

文件读取失败的核心原因

当尝试读取文件时,最常见的报错信息包含 codec can't decode byte 或 UnicodeDecodeError。这通常发生在尝试以文本模式(默认)读取包含非UTF-8编码字符的文件,或者错误地尝试解码二进制文件(如图片或视频)时。

1. 编码错误处理

如果读取文本文件时遇到编码报错,应显式指定正确的编码格式(如 utf-8 或 gbk)。

with open('E:/work_spider/xxx/xx.csv', "r", encoding="utf-8") as csvfile:
  csvReader = csv.reader(csvfile)
  for content in csvReader:
    # 注意:此处str(content)可能引发后续类型问题,需谨慎使用
    if 'l.' in content:
      continue
    id_list.append(content.split('\\')[0].replace("['", ""))

2. 二进制文件(图片/视频)处理

图片和视频文件必须以二进制方式请求和写入。若使用文本模式打开,会触发解码错误。应使用 'wb'(二进制写)或 'rb'(二进制读)模式。

# 示例:下载并保存视频文件
VideoHtmlContent = requests.get(url = VideoUrl,headers=headers).content
with open('bobovideo.mp4','wb',) as f:
  f.write(VideoHtmlContent)

文件打开模式详解

正确选择文件打开模式是避免读取失败的关键。以下是常用模式的说明:

  • 文本模式(默认):t。适用于纯文本文件。
  • 二进制模式:b。适用于图片、视频、可执行文件等。
  • 读写组合:+ 表示同时支持读写。

具体模式对照:

  • r:读取(默认文本)。
  • w:写入(覆盖原文件)。
  • a:追加(在文件末尾添加)。
  • rb:二进制读取。
  • wb:二进制写入。
  • ab:二进制追加。
  • r+ / w+ / a+:文本读写。
  • rb+ / wb+ / ab+:二进制读写。

TypeError: 'str' object is not callable 排查

该错误表示试图调用一个字符串类型的变量或对象,通常是因为变量名与内置函数 str() 冲突,或对已是字符串的变量再次调用 str() 导致逻辑错误。

# 错误示例:如果filePath已被定义为字符串,再次调用str()虽不报错但多余
# 若变量名被误赋值为字符串,再尝试调用则会报错
filePath=kwargs['path']
filePathStr=str(filePath)

解决建议:

  1. 检查变量名是否覆盖了内置函数(如将 str 赋值给变量)。
  2. 确认传入参数的类型,避免对非字符串对象进行不必要的转换。
  3. 保持关键字参数传参时的原有类型,除非明确需要类型转换。

总结

处理Python文件读取失败,关键在于区分文件类型:文本文件注意编码指定,二进制文件(图片/视频)必须使用 'b' 模式。同时,避免变量名与内置函数冲突,并谨慎使用类型转换函数。以上就是Python文件读取失败处理的详细内容,更多关于Python文件操作与错误排查的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。