zoukankan      html  css  js  c++  java
  • 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="") #读取真正的换行符
    
    
  • 相关阅读:
    Javascript是单线程的深入分析
    非阻塞式JavaScript脚本介绍
    javascript 关于函数的返回值
    javascript运算符的优先级
    JavaScript 中的 this
    javascript中关于坐标 大小 的描述
    Javascript引擎单线程机制及setTimeout执行原理说明
    回车登录页面的问题
    有关架构的若干思考
    Bootstrap3 模态框 select2搜索框无法输入
  • 原文地址:https://www.cnblogs.com/chrrydot/p/9788473.html
Copyright © 2011-2022 走看看