文件操作 - 总结

1.f = open(file='D:/**.txt',mode='r',encoding='utf-8')   

-------------------------------- 

1.1.模式:

r    只读 str       需要 encoding        只支持read()
rb   只读 bytes     不需要 encoding      只支持read()
w    创建 写 str    需要 encoding        只支持write()
wb   创建 写 bytes  不需要 encoding      只支持write()  写的str需要encode()  
a    追加 str       需要 encoding        只支持write()
ab   追加 bytes     不需要 encoding      只支持write()  写的str需要encode()  
     追加的内容之前是什么编码,追加的也要是什么编码,否则会乱码 
r+   读写模式       需要 encoding        支持read()和write()   
     先读后写,支持往后追加
w+   写读模式       需要 encoding        支持read()和write() 
     以写的模式打开 清空 重新创建  一般不用

1.2.文件 f 的方法:

'read',          f.read() 全读   f.read(8) 读几个字符 按字符算的    
'readable',      f.readable() = True / False  判断文件是否可读 
'readline',      f.readline() 读一整行 f.readline(4) 读一整行的几个字符   遇到\r or \n为止
'readlines',     f.readlines() 读所有的行存放在列表中  f.readlines(10) 可以控制展示几行的内容  
'write',         f.write('*****') 写入 str  清空,创建,在写 / 创建,在写
'writable',      f.writable() = True / False  判断文件是否可写
'writelines'     f.writelines(list) 可写入列表 
'fileno',        f.fileno()  返回文件句柄在内核中的索引值 
'flush',         f.flush() 把文件从内存buffer里强制刷新到硬盘  
'seek',          f.seek(0) f.seek(0,1) f.seek(3)  把操作文件的光标移动到指定位置 按字节算的  
'seekable',      f.seekable() = True / False   判断文件是否可进行seek操作 
'tell',          f.tell()   返回当前文件操作光标位置  按字节算的
'truncate',      f.truncate() 需要f.seek(3)配套使用  f.truncate(8) 8个字节后的就截断了 从当前位置往后截断  
'close',         f.close()   关闭文件 
'isatty',        f.isatty() = True / False 检测文件是否连接到一个终端设备       
'closed',         
  
'newlines',      f.newlines    
'buffer',        f.buffer    
'detach',        
'encoding',      f.encoding      
'errors',        f.errors    
'line_buffering', f.line_buffering    
'mode',          f.mode   
'name',          f.name    

---------------------------------

2.chardet 用法:

1 import chardet
2 f = open('4.txt','rb')    
3 result = chardet.detect(f.read())  
4 {'encoding': 'utf-8', 'confidence': 0.7525, 'language': ''}  

-------------------------------- 

3.修改文件不是追加文件 

修改文件 - 占硬盘:

 1 import os
 2 old_str = '我们'
 3 new_str = '北京and西安'
 4 
 5 f = open('4.txt', 'r+', encoding='utf-8')
 6 f_new = open('5.txt', 'w', encoding='utf-8')
 7 for line in f:
 8     if old_str in line:
 9         line = line.replace(old_str, new_str)
10     f_new.write(line)
11 f.close()
12 f_new.close()
13 os.replace(f_new.name, f.name) 

 修改文件 - 占内存

 1 def save_back_to_file(account_dic):
 2     """
 3     把account dic 转成字符串格式 ,写回文件 
 4     :param account_dic: 
 5     :return: 
 6     """
 7     f.seek(0) #回到文件头
 8     f.truncate() #清空原文件
 9     for k in account_dic:
10         row = ",".join(account_dic[k])
11         f.write("%s\n"%row)
12 
13     f.flush()
posted @ 2018-02-15 10:45  Alice的小屋  阅读(241)  评论(0编辑  收藏  举报