TXT 文本存储

使用 open 方法:

file = open('example.txt', 'w', encoding='utf-8') file.write('文本内容') file.write('\n' + '文本内容') file.close()

还可以使用 with as 简写语法。在 with 控制块结束时,文件会自动关闭:

with open('example.txt', 'w', encoding='utf-8') as file: file.write('文本内容') file.write('\n' + '文本内容')

文件的打开模式:

Mode Description
r 以只读方式打开文件。文件的指针将会放在文件的开头。默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

JSON 文件存储

读取 JSON

用 json 库的 loads 方法将 json 文本字符串转为 json 对象。

例如:

import json str = ''' [{     "name": "Max",     "gender": "male",     "birthday": "1993-07-18" }, {     "name": "Amy",     "gender": "female",     "birthday": "1994-08-12" }] ''' print(str) print(type(str)) data = json.loads(str) print(data) print(type(data))

输出:

[{ "name": "Max", "gender": "male", "birthday": "1993-07-18" }, { "name": "Amy", "gender": "female", "birthday": "1994-08-12" }] <class 'str'> [{'name': 'Max', 'gender': 'male', 'birthday': '1993-07-18'}, {'name': 'Amy', 'gender': 'female', 'birthday': '1994-08-12'}] <class 'list'>

获取元素:

print(data[0]['name']) print(data[0].get('name'))

输出:

Max
Max

输出 JSON

用 json 库的 dumps 方法将 JSON 对象转化为字符串。

例如:

import json data = [     {         'name''Max',         'gender''male',          'birthday''1993-07-18'},      {         'name''Amy',          'gender''female',          'birthday''1994-08-12'     } ] print(type(data)) str = json.dumps(data) print(str) print(type(str))

输出:

<class 'list'> [{"name": "Max", "gender": "male", "birthday": "1993-07-18"}, {"name": "Amy", "gender": "female", "birthday": "1994-08-12"}] <class 'str'>

保存成文件:

import json data = [     {         'name''Max',         'gender''male',          'birthday''1993-07-18'},      {         'name''Amy',          'gender''female',          'birthday''1994-08-12'     } ] with open('data.json''w'as file:     file.write(json.dumps(data, indent=2))

indent 参数是缩进字符个数,不传则不缩进。

如果包含中文,则需要增加 ensure_ascii=False 并设置编码格式。

with open('data.json', 'w', encoding='utf-8') as file: file.write(json.dumps(data, indent=2, ensure_ascii=False))

CSV 文件存储

写入 CSV 文件

通过 csv.writer() 写入:

import csv with open('data.csv''w', encoding='utf8', newline=''as csvfile:     writer = csv.writer() 写入:(csvfile)     writer.writerow(['id''name''age'])     writer.writerow(['1''Max'10])     writer.writerow(['2''Amy'11])     writer.writerow(['3''Mike'12])

将输出一个包含以下内容的 data.csv 文件:

id,name,age
1,Max,10
2,Amy,11
3,Mike,12

默认的分隔符是“,”,可以通过 writer = csv.writer(csvfile, delimiter=' ') 修改。

通过 csv.DictWriter() 写入字典数据:

import csv with open('data.csv''w', encoding='utf8', newline=''as csvfile:     fieldnames = ['id''name''age']     writer = csv.DictWriter(csvfile, fieldnames=fieldnames)     writer.writeheader()     writer.writerow({'id''1''name''Max''age'10})     writer.writerow({'id''2''name''Amy''age'11})     writer.writerow({'id''3''name''Mike''age'12})

同理,追加数据就是:

import csv   with open('data.csv''a', encoding='utf8', newline=''as csvfile:       fieldnames = ['id''name''age']       writer = csv.DictWriter(csvfile, fieldnames=fieldnames)       writer.writerow({'id''4''name''Lin''age'13})

读取 CSV 文件

通过 csv.reader():

import csv   with open('data.csv''r', encoding='utf-8'as csvfile:       reader = csv.reader(csvfile)       for row in reader:           print(row)

输入:

['id', 'name', 'age']
['1', 'Max', '10']
['2', 'Amy', '11']
['3', 'Mike', '12']

用 Pandas 写入和读取文件

import pandas as pd   data = {     'id': ['1''2''3'],     'name': ['Max''Amy''Mike'],     'age': ['11''12''13'] } df = pd.DataFrame(data) df.to_csv('data.csv', index=False)

得到包含下面内容的 data.csv 文件:

id,name,age
1,Max,11
2,Amy,12
3,Mike,13

读取 csv:

import pandas as pd  

df = pd.read_csv('data.csv')  
print(df)

输出:

   id  name  age
0   1   Max   11
1   2   Amy   12
2   3  Mike   13