Python基础-文件操作

文件操作
① 读文件
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、文件编码
  以什么格式写 就要以什么格式读







posted @ 2018-07-11 23:35  桑铎是大叔  阅读(115)  评论(0)    收藏  举报