zoukankan      html  css  js  c++  java
  • 文件操作

    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) 读一整行的几个字符   遇到
     or 
    为止
    '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
    "%row)
    12 
    13     f.flush()
  • 相关阅读:
    C++中的ravalue学习笔记
    C++中的抽象类
    C++中的显式类型转换
    C++中的继承和多继承
    C++中的多态
    Yocto学习笔记
    HIDL学习笔记
    hadoop2.5搭建过程
    《Redis设计与实现》学习笔记
    40 数组中只出现一次的数字
  • 原文地址:https://www.cnblogs.com/alice-bj/p/8449306.html
Copyright © 2011-2022 走看看