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
0 条评论
来做第一个留言的人吧!