文本数据/TXT

读取

使用 open() 函数配合 rt 模式读取文本文件内容:

备注1:rt 模式中的 t 表示对换行符进行智能转换,在 UNIX 和 Windows 中换行符的识别是不同的,对于 UNIX 换行符为 \n ,而 Windows 为 \r\n 。默认情况下,Python 工作在“通用型换行符”模式下,可以将所有常见的换行格式识别出来。加入 t 参数,在读取时,如果换行符为 \r\n ,会将其转换为 \n 字符。同理,在写入时会将换行符 \n 转换为当前系统默认的换行符。

备注2:也可以给 open() 函数提供一个 newline='' 参数对换行符进行手动操作。

1
2
3
4
5
6
7
8
9
# 将整个文件读取为一个字符串
with open('file.txt', 'rt') as f:
data = f.read()

# 一行一行地读取文件
with open('file.txt', 'rt') as f:
for line in f:
# process line
...

备注:使用 with 语句,会为使用的文件创建一个上下文环境,当程序的控制流程离开 with 语句块后,文件将自动关闭。如果不使用 with 语句,需记得手动关闭文件:f.close()

举例:将 .txt 文件内容读取为一个 python 列表,列表元素按顺序依次为文本文件每一行的内容:

1
2
3
4
5
6
def read_txt(txt_path):
lines = []
with open(txt_path, 'rt') as f:
for line in f:
lines.append(line.strip())
return lines

写入

与读取类似,使用 wt 模式即可。

1
2
3
4
5
6
7
8
9
10
11
# 将文本内容写入文件
with open('file.txt', 'wt') as f:
f.write(line_1)
f.write(line_2)
...

# 将 print() 输出重定向到文件
with open('file.txt', 'wt') as f:
print(line_1, file=f)
print(line_2, file=f)
...

JSON文件

备注1:JSON 编码支持的基本类型有 None、bool、int、float 和 str,同时也包含由这些基本类型组成的列表以及字典。对于字典,JSON 会假设所有键(key)都是字符串(字典中任何非字符串的键在编码时都会被转换为字符串)。一般来说,把 JSON 最顶层对象定义为字典是一种标准做法。

备注2:JSON 编码格式与 Python 语法基本相同,有几处细微区别,如 True 会被映射为 trueFalse 会被映射为 falseNone 会被映射为 null

以下为常用的读取和写入 json 文件的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import json

# 读取 json 文件
def read_json(fpath):
"""Reads json file from a path."""
with open(fpath, 'r') as f:
obj = json.load(f)
return obj

# 写入 json 文件,并格式化
def write_json(obj, fpath):
"""Writes to a json file."""
mkdir_if_missing(osp.dirname(fpath))
with open(fpath, 'w') as f:
json.dump(obj, f, indent=4, separators=(',', ': '))

备注:在写入 json 文件时,如果不需要格式化,可将最后一行改为 json.dump(obj)

Pickle文件