码迷,mamicode.com
首页 > 其他好文 > 详细

(七)文件处理

时间:2018-12-05 14:26:41      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:访问   for   run   内存   读写   src   seek   表示   ack   

 

文件打开

语法:

open(filename,mode,encoding=‘‘)

解释:

filename:代表你要访问的文件名

mode:这里代表你打开文件的模式,有 只读,写入,读写,追加等模式;默认为只读模式。

encoding:编码与解码的方式

编码:‘字符串‘---------encode---------》bytes
解码:bytes---------decode---------》‘字符串‘

打开文件的不同模式见下表

技术分享图片

注意: b的方式不能指定编码,比如f=open(‘test11.py‘,‘rb‘,encoding=‘utf-8‘)是不对的

文件的操作方法

文件的常用方法有13种,如下图

技术分享图片

技术分享图片

注意:read(3)代表读取三个字符,其余的关于光标移动的方法都是以字节为单位,如seek,tell,truncate

seek方法深入

seek函数语法:

fileObject.seek(offset, whence)

  • offset:光标开始的偏移量,也就是代表需要移动偏移的字节数
  • whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

若文件为

aaa
123
f = open(123.txt,rb)   --如果whence是1或者2模式 这里一定要加b模式
f.seek(-5,2)               --如果whence是2 光标偏移量一定要是负数
print(f.read())
结果:b‘\r\n123‘ --win下回车是\r\n,linux下是\n

需求:读取文件的最后一行

方法一:

f = open(123.txt,rb)
date = f.readlines()
print(date[-1].decode())    --这种方法不好,还是把整个文件读取并存入内存

方法二:

f=open(d.txt,rb)        --核心思想是:先假设一个偏移量,然后不断加大,不断从文件末尾seek这个偏移量,直到读出最后两行,然后data[-1]就是最后一行
for i in f:                 --循环文件的推荐方式,一行一行给
    offs=-3
    n=0
    while True:
        f.seek(offs,2)
        data=f.readlines()   --读取当前光标到文件末尾的内容
        if len(data) > 1:
            print(最后一行,data[-1])
            break
        offs*=2

 

(七)文件处理

标签:访问   for   run   内存   读写   src   seek   表示   ack   

原文地址:https://www.cnblogs.com/xulan0922/p/9752086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!