读写文件的几种方式
手动方式
- open+close
- 三种模式
w, write, 写
r,read,读
a, append,追加内容
import os
os.chdir(r'path') 切换到操作路径
f = open('de8ug.txt', 'w')
用w方式打开文件,不存在则创建
f.write('de8ug' * 8) # 写入字符串
f.close()
自动方式
with open('de8ug-1.txt', 'w') as f:
f.write('de8ug')
with open('de8ug.txt') as f:
data = f.read()
print(data)
with open('de8ug.txt') as f:
print(f.readline()) *读取一行*
with open('de8ug.txt', 'a') as f:
'a' 多几行,追加到源文件
f.write('111111\n')
f.write('111111\n')
f.write('\n111111')
f.write('\n111111')
with open('de8ug.txt') as f:
print(f.readlines()) #读取多行
#结果返回一个列表
['de8ugde8ugde8ugde8ugde8ugde8ugde8ugde8ug111111\n', '111111\n', '\n', '111111\n', '111111']
- fnmatch
- 匹配相应后缀名的文件
import fnmatch
for f in os.listdir('test'):
if fnmatch.fnmatch(f, '*.txt'):
print(f)
elif fnmatch.fnmatch(f, '\*.pdf'):
print('find pdf', f)
- *号匹配多个,若匹配单字符可用?号
- *正则,?匹配一个字符
- glob
- 单纯匹配某种命名规则文件
import glob
for f in glob.glob('test/[0-9].doc'):
print(f)
test\0.doc
test\1.doc
test\2.doc
test\3.doc
test\4.doc
- pickle
- 序列化存储
# 序列化 pickle,持久化,存盘
# 后缀名随意,推荐pkl
# 存储Python的数据结构
name_list = ['de8ug', 'lilei', 'hmm']
data = {'name': name_list, 'age': (4,5,6)}
import pickle
with open('data.pkl', 'wb') as f:
# 使用‘wb’,通用二进制存储
pickle.dump(data, f)
with open('data.pkl', 'rb') as f:
# 'rb', 读写都二进制
data = pickle.load(f)
print(data)
{'name': ['de8ug', 'lilei', 'hmm'], 'age': (4, 5, 6)}
- io
- 虚拟化读写
# 虚拟文件,临时文件,不需要真的保存文件到磁盘
import io
output = io.StringIO()
output.write('第2行代码\n')
print('试一下print到文件:', file=output)
# 取出内容
contents = output.getvalue()
print(contents)
# 关闭文件,清理缓存
output.close()
- shelve
- 用类似字典的方式存储任意的Python对象
import shelve
with shelve.open('de8ug.she') as so:
so['de8ug'] = '存一下888888这个值'
with shelve.open('de8ug.she') as so:
print(so['de8ug'])
存一下888888这个值