Python中open函数的使用方法与常见问题

存进 txt 的数据都是 unicode 格式,然后我 f = open("taobao.txt", "a", encoding="utf-8") 为啥这行显示错误,但是删了 encoding="utf-8"显示正确了......


Python中open函数的使用方法与常见问题
8 回复

Python的open()函数是文件操作的基础,但确实有些细节容易踩坑。直接看代码:

# 基本读写操作
# 1. 读取文件(默认模式)
with open('example.txt', 'r', encoding='utf-8') as f:
    content = f.read()
    print(content)

# 2. 写入文件(覆盖模式)
with open('output.txt', 'w', encoding='utf-8') as f:
    f.write('Hello World\n')
    f.write('第二行内容')

# 3. 追加模式
with open('output.txt', 'a', encoding='utf-8') as f:
    f.write('\n这是追加的内容')

# 4. 二进制模式(处理图片等)
with open('image.jpg', 'rb') as f:
    binary_data = f.read()

# 5. 逐行读取大文件
with open('large_file.txt', 'r', encoding='utf-8') as f:
    for line in f:  # 内存友好
        print(line.strip())

常见问题及解决:

  1. 编码问题 - 总是明确指定encoding参数,特别是处理中文时用utf-8
  2. 文件路径 - 相对路径基于当前工作目录,可用os.path处理路径
  3. 文件不存在 - 'r'模式文件不存在会报错,'w'模式会创建新文件
  4. 忘记关闭文件 - 一定要用with语句,自动处理关闭
  5. 换行符差异 - Windows和Unix换行符不同,可用newline=''参数控制

模式速查:

  • 'r' - 只读(默认)
  • 'w' - 写入(覆盖)
  • 'a' - 追加
  • 'b' - 二进制模式
  • 'r+' - 读写(文件必须存在)
  • 'w+' - 读写(创建新文件)

记住用with语句和指定编码就能避免大部分问题。


不是编码,而是格式问题…直接显示 unexpected arguments ( s )了…我记得以前这么写是可以的

你以前写的是 codecs.open(“taobao.txt”, “a”, encoding=“utf-8”)???

以前好像是 python3 版本 这次是 python2 版本

2
3
这个函数的签名不同,3 有很大的变化

目测如 3 楼所说,楼主把 codecs 模块的 open 函数和内置 open 函数用错了

至少贴个 traceback 啊。。。。。。

Python 2:
from codecs import open

回到顶部