问题
读写各种不同编码的文本数据,比如ASCII,UTF-8或UTF-16编码等。
解决方案
使用带有 r+
模式的 open()
函数读取文本文件。如下所示:
with open('/Users/xz/test/1.txt', 'r+') as f:
data = f.read()
print(data)
mac-python
linux-python
windows-python
with open('/Users/xz/test/1.txt', 'rt') as f:
print(type(f))
for line in f:
print(line)
<class '_io.TextIOWrapper'>
mac-python
linux-python
windows-python
类似的,为了写入一个文本文件,使用带有 wt
模式的 open()
函数, 如果之前文件内容存在则清除并覆盖掉。如果是在已存在文件中添加内容,使用模式为 a+
的 open()
函数。
Python支持非常多的文本编码。几个常见的编码是ascii, latin-1, utf-8和utf-16。 在web应用程序中通常都使用的是UTF-8。
讨论
示例程序中,with
语句给被使用到的文件创建了一个上下文环境, 但 with 控制块结束时,文件会自动关闭。你也可以不使用 with 语句,但是必须记得手动关闭文件:
f = open('somefile.txt', 'rt')
data = f.read()
f.close()