Python老男孩 day18 文件操作的其他方法

http://www.cnblogs.com/linhaifeng/articles/5984922.html

f=open('b.txt','r+',encoding='utf-8',newline='') #读取文件中真正的换行符号

f.flush() #讲文件内容从内存刷到硬盘

f.closed #文件如果关闭则返回True

f.encoding #查看使用open打开文件的编码
f.tell() #查看文件处理当前的光标位置

f.seek(3) #从开头开始算,将光标移动到第三个字节
f.truncate(10) #从开头开始算,将文件只保留从0-10个字节的内容,文件必须以写方式打开,但是w和w+除外

 

seek方法补充:
#模式0(默认就是模式0),光标从文件的初始位置开始
f=open('seek.txt','r',encoding='utf-8')
print(f.tell())
f.seek(10)
print(f.tell())
f.seek(3)
print(f.tell())

运行结果:
0
10
3

#模式1,光标从文件的上一次的位置开始
f=open('seek.txt','rb')
print(f.tell())
f.seek(10,1)
print(f.tell())
f.seek(3,1)
print(f.tell())

运行结果:
0
10
13

#模式2 光标从最后开始反向往前
f=open('seek.txt','rb')
f.seek(-3,2)
print(f.tell())

运行结果:
20

 

#读取文件最后一行
#方法一:
f=open('日志文件','rb')
data=f.readlines()
print(data[-1].decode('utf-8'))

运行结果:
2016/12/30 sb  干了件sb事情
#这样需要读取整个文件到内存,不推荐

#循环文件的推荐方式  这样文件是一行一行读取
f=open('日志文件','rb')
for i in f:
    print(i)


#方法二:
f=open('日志文件','rb')
for i in f:
    offs=-10
    while True:
        f.seek(offs,2)
        data=f.readlines()
        if len(data) > 1:
            print('文件的最后一行是%s' %(data[-1].decode('utf-8')))
            break
        offs*=2

 

posted @ 2018-07-25 23:09  小飞侠Kobe  阅读(244)  评论(0编辑  收藏  举报