zoukankan      html  css  js  c++  java
  • (七)文件处理

     

    文件打开

    语法:

    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' 123' --win下回车是 ,linux下是

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

    方法一:

    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
  • 相关阅读:
    python——集合
    python——字典
    python——用递归的方法求x的y次幂
    python——全局变量&局部变量
    python——组织列表
    Linux显示网络相关信息
    Linux里的发消息
    Linux中各种压缩文件
    Linux中的man
    Linux的find命令
  • 原文地址:https://www.cnblogs.com/xulan0922/p/9752086.html
Copyright © 2011-2022 走看看