文件操作
① 读文件
f = open('one',mode='r',encoding='utf-8') #r=只读模式
data = f.read()
print(data)
或者写成 这样写以二进制输出 不知道编码格式的话
f = open('one',mode='rb').read() #rb=以二进制模式打开,就是说硬盘怎么存的 就怎么读取 可用于网络传输
print(f)
网络传输 遇到编码问题解决办法
(安装python第三方工具包 pip install chardet)
import chardet
result = chardet.detect(open('one','rb').read())
print(result)
f.decode("gdk") # 用查出来的编码格式输出内容
② 写文件
f = open('four','w').write('北京大学全体人员w!') #创建新文件,若有清空
print(f)
③ 追加
f = open('one','ab').write('\n我要追加一条!'.encode('gbk')) # 以什么模式写进去
print(f)
④ 读写混合模式
r+ 读写模式 先读后写
w+ 写读模式 先写后读,写(创建)模式打开 没啥用
f = open('one','r+',encoding='gbk')
print(f.read())
f.write('在继续写')
f.close() #关闭文件
⑤ 文件其他功能
fileno 返回文件句柄在内核中的索引值,以后做IO多路复用时可以用到
flush 把文件从内存buffer里强制刷新到硬盘 close之前字符存在内存里
readable 判断是否只读,w不是只读
readline 只读一行 遇到/r 或\n 暂停
seekable 判断文件是否可进行seek操作
truncate 从当前位置开始截断文件 truncate里面的值是从头开始 非光标位置
writable 判断文件是否可写
⑥ 光标移动
tell() 返回光标在那个字节位置
seek() 把光标移动到那个位置 seek(4)移动到字节4后
⑦ 文件内存 硬盘 未完待续
硬盘文件修改
# username password age position department
# alex 123abc 24 Engineer IT
# rain df2@432 25 Teacher Teching
import os
file = open('user_file', 'r')
file_new = open("user_file_new", 'w')
for i in file.readlines():
if 'alex' in i:
i = i.replace('abc123','123abc')
file_new.write(i)
file.close()
file_new.close()
os.rename('user_file_new','user_file')
总结
1、几种模式
r 读模式
rb 读(二进制)模式
w 写模式 创建模式
w+ 写(二进制)模式
r+ 读写模式
w+ 写读模式
a 追加
ab 追加(二进制)
2、文件编码
以什么格式写 就要以什么格式读