操作方式 | 解释 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
+ | 读写方式,可以写入数据,可以读取数据 |
file = open('./data/', 'w', encoding='utf-8')
message = 'hello 世界'
file.write(message)
file.close()
file = open(file='./data/', mode='r', encoding='utf-8')
info = ad()
print(info)
file.close()
# ^_^ __ ^_^ __ ^_^ __ ^_^ _风骚的分割线_ ^_^ __ ^_^ __ ^_^ __ ^_^
# 输出结果
C: E:/PY1901_0114WORK/days11/demo01_IO文件操作.py
hello 世界
file = open(file='./data/', mode='a', encoding='UTF-8')
# 要操作的文本数据
message = '白日依山尽'
file.write(message)
message = 'n黄河入海流'
file.write(message)
message = 'n欲穷千里目'
file.write(message)
message = 'r更上一层楼'
file.write(message)
file.close()
# ^_^ __ ^_^ __ ^_^ __ ^_^ _风骚的分割线_ ^_^ __ ^_^ __ ^_^ __ ^_^
# 输出结果
白日依山尽
黄河入海流
欲穷千里目
更上一层楼二进制文件的操作
# C:UsersAdministratorPictures/timg1.jpeg
# 读取计算机中的二进制文件数据
file = open(file='C:/Users/Administrator/Pictures/timg1.jpeg', mode='rb')
ad())
file.close()# 将数据重新存储到我们制定的位置
file2 = open(file='./data/test.jpeg', mode='wb')
file2.ad())
file2.close()
# 外层表示的是读,内层表示的是写,不用关闭流
with open('C:/Users/Administrator/Pictures/skyload.jpg', 'rb') as file1:with open('./data/' + file1.name[file1.name.rfind('/'):], 'wb') as file2:file2.ad())
# 基本数据类型,组合数据类型
# 1. 将程序中的字典类型数据,转换成字符串存储到文件中
users = {'admin': {'username': 'admin', 'password': '123', 'nickname': '南易'}}users_str = str(users)with open('./data/', 'w') as file:file.write(users_str)
# 2. 将文件中的字符串数据, 读取到程序中
with open('./data/', 'r') as file:users = ad()print(users, type(users))# 将字符串数据, 转换成字典: 该字符串的格式和python中的字典的表达式一致users = eval(users)print(users, type(users))('admin'))
# ^_^ __ ^_^ __ ^_^ __ ^_^ _风骚的分割线_ ^_^ __ ^_^ __ ^_^ __ ^_^
# 输出结果
C: E:/PY1901_0114WORK/days11/demo02_类型转换和eval函数.py
{'admin': {'username': 'admin', 'password': '123', 'nickname': '南易'}} <class 'str'>
{'admin': {'username': 'admin', 'password': '123', 'nickname': '南易'}} <class 'dict'>
{'username': 'admin', 'password': '123', 'nickname': '南易'}
'''
python中提供一个特殊的模块, 可以直接对python中的数据进行序列化操作序列化: 按照指定的数据顺序定义数据格式[类似编码]
'''
import json# 准备操作的数据
users = {'admin': {'username': 'admin', 'password': '123', 'nickname': 'MrBean'}}
# 1. 将程序中的数据,直接存储到文件中
# json模块的操作
with open('./data/3.1.json', 'w') as file:json.dump(users, file)
# 2. 将文件中的数据, 读取到程序中
with open('./data/3.1.json', 'r') as file:users = json.load(file)print(users, type(users))
# ^_^ __ ^_^ __ ^_^ __ ^_^ _风骚的分割线_ ^_^ __ ^_^ __ ^_^ __ ^_^
# 输出结果
C: E:/PY1901_0114WORK/days11/demo03_json模块.py
{'admin': {'username': 'admin', 'password': '123', 'nickname': 'MrBean'}} <class 'dict'>
# 数据准备
s = '字符串'
i = 10
f = 3.141592653589793
b = True
c = 12 + 5j
l = [1, 2, 3]
d = {'username': 'admin', 'password': '123'}
# 将上边的数据存储在列表中
x = [s, i, f, b, c, l, d]# 存储多个数据的模块: marshal
import marshal# 1. 存储多个数据到文件中
with open('./data/4.1.dat', 'wb') as file:# 第一次存储一个数量: 有多少个数据存储到了文件marshal.dump(len(x),file)# 存储每个数据for x1 in x:marshal.dump(x1, file)
# 2. 将多个数据从文件中一次去除
with open('./data/4.1.dat', 'rb') as file:n = marshal.load(file)# 将所有数据一次取出for x in range(n):print(marshal.load(file))
# ^_^ __ ^_^ __ ^_^ __ ^_^ _风骚的分割线_ ^_^ __ ^_^ __ ^_^ __ ^_^
# 输出结果
字符串
10
3.141592653589793
True
(12+5j)
[1, 2, 3]
{'username': 'admin', 'password': '123'}
# 数据准备
users = {'admin': {'username': 'admin', 'password':'123', 'nickname': 'MrBean'}}
articles = {'标题': {'title': '标题', 'content': '文章内容', 'author': users['admin']}}import shelvefile = shelve.open('./data/5.1')# 1. 将多个数据按照key:value的形式存储到文件中
file['users'] = users
file['articles'] = articles# 读取数据
print(file['users'], type(file['users']))
print(file['articles'], type(file['articles']))# ^_^ __ ^_^ __ ^_^ __ ^_^ _风骚的分割线_ ^_^ __ ^_^ __ ^_^ __ ^_^
# 输出结果
C: E:/PY1901_0114WORK/days11/demo05_shelve.py
{'admin': {'username': 'admin', 'password': '123', 'nickname': 'MrBean'}} <class 'dict'>
{'标题': {'title': '标题', 'content': '文章内容', 'author': {'username': 'admin', 'password': '123', 'nickname': 'MrBean'}}} <class 'dict'>
小结:
python存取多个数据到文件中
如果按常规方式-open/write/read方式, 每个独立的数据都要单独存储一个文件1. str()数据: 字符串:文件存储-->文件读取:eval(): 数据2. 数据: json.dump(): 文件存储->json.load():数据如果要存储多个数据到一个文件中3. 多个数据: 总数量:marshal.dump()->marshal.load(fp):总数量:循环->marshal.load(fp)依次读取多个数据, 也可以按照比较友好的like dict的方式, 将数据存储到文件中可以将数据存储在文件中, 通过key值直接获取对应的数据,用shelve
本文发布于:2024-02-03 00:57:18,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170689308947613.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |