python 文件处理

1
2
3
a = 2
b = 3
val = a if a < b else b

读文件

1
2
3
f = open(file='d:/hello.txt',mode='r,encoding='utf-8')
data = f.read()
f.close
  • 二进制模式
    mode = b

智能检测编码 chardet

1
2
3
4
5
6
7
import chardet
f = open('log',mode='rb')
data = f.read()
f.close()
result = chardet.detect(data)
print(result)
data.decode("gb2312")
  • 安装
    pip3 install chardet

    大文件处理

1
2
3
4
f = open("log",'r',encoding="gbk")
for line in f:
print(line)
f.close()

写文件(创建新文件,清空数据)

1
2
3
f = open('log','w',encoding='gbk')
f.write("helow")
f.close( 大专栏  python 文件处理)
  • 二进制写
1
2
3
f = open('log','wb')
f.write("helow",encoding='gbk')
f.close()

追加文件

1
2
3
f = open('log','ab')
f.write("hellow",encoding='gbk')
f.close

混合读写

  • 读写模式

    1
    2
    3
    f = open('log', 'r+')
    f.read()
    f.write("hello")
  • 写读模式(清空原文件),几乎无用

    1
    2
    3
    f = open('log', 'w+')
    f.read()
    f.write("hello")

常用函数

flush #强制把内存刷新到硬盘
read #按字符读
tell #当前文件光标位置,按字节来度
seek #改变光标位置,按字节读
truncate #按当前位置截断文件(3,6) 6->从头开始截取6个

文件修改(占内存或占硬盘)

  • 占硬盘
    f1 = “log.txt”
    f_new = “log_new.txt”
    old_str = “alex”
    new_str = “david”
    f = open(f1,”r”,encoding=”utf-8”)
    f_new = open(f_new,”w”,encoding=”utf-8”)
    for line in f:
    if old_str in line:

    line = line.replace(old_str,new_str)
    

    f_new.write(line)
    f.close()
    f_new.close()
    os.rename(f_new,f1)

  • 占内存

原文地址:https://www.cnblogs.com/lijianming180/p/12284339.html