python文件管理

文件没有修改操作,修改的方式为打开文件--读取文件--内存中编辑文件--将内容写入文件

打开文件方式

with open('a.txt','w') as f: #操作系统自动关闭文件
    f.write('xxx
')

f = open('a.txt','w',encoding='gbk')
f.write('xxx')
f.close()

文件打开模式

  • r 只读模式。如果文件不存在,返回异常FileNotFoundError,默认值;
  • w 覆盖写模式,文件不存在则创建,存在则完全覆盖;
  • x 创建写模式,文件不存在则创建,存在则返回异常FileExistError;
  • a 追加写模式,文件不存在则创建,存在则在文件最后追加内容;
  • t 文本文件模式,默认值;
  • b 二进制文件模式;
  • ‘+' 与r/w/x/a一同使用,在原功能的基础上增加同事读写的功能

文件打开时+表示同时读写某个文件

  • r+ 读写
  • w+ 写读
  • x+ 写读
  • a+ 写读

b表示以字节的方式操作(对linux无影响,如果需要跨平台性能好文件打开关闭建议采用rb的方式)

  • rb或r+b
  • wb或w+b
  • xb或x+b
  • ab或a+b

f.readlines() 一次读取文件,读取后的文件为列表

二进制文件读取,不能指定编码,只能读取文件之后使用decode方式进行解码

f = open(‘a.txt’,'rb')
data = f.read().decode('utf-8')
print(data)
f.close

二进制文件写入,不能指定编码,只能将内容先转换成bytes类型

#方法一
f = open(‘a.txt’,'wb')
f.write(bytes('11111
',encoding='utf-8'))
f.close()
#方法二
a = open(‘a.txt’,'wb')
a.write('杨戬'.encode('utf-8'))
a.close()

文件内容从内存写入到磁盘

一般需要f.close()的时候才能够写入文件,如果不关闭文件,需要使用下面命令写入到文件中

f.flush()

文件光标位置

print(f.tell()) #读取当前光标位置
f.seek() #修改光标位置,按照**字节**计算
f.read(4) #读取4个**字符**

seek三种模式

seek(光标移动多少位,模式)

  • 0 默认模式,从文件开头
  • 1 以光标当前位置进行seek,相对seek
  • 2 从文件末尾进行seek 如seek(-10,2)

使用seek案例

读取文件最后一行

f = open(日志文件,'r')
for i in f:
    offs=100 #定义偏移量,一行大概10个字节    
    while True:
        f.seek(offs,2)
        data = f.readlines()
        if len(data) > 1:
            print(‘文件的最后一行是%s’, %(data[-1].decode('utf-8')))
            break
        offs*=2
    

循环文件方式,要一行就读取一行,减小内存占用

for i in f:
    print(i)

跨平台的换行符读取

f.open("a.txt","r",newline="") #读取真正的换行符

原文地址:https://www.cnblogs.com/chrrydot/p/9788473.html