• Python基础知识之文件读写与修改


    基本操作

    f = open("file1", "r")  # 打开文件
    first_line = f.readline() # 读一行
    data = f.read() # 读取剩下所有内容,文件大时候不要用
    f.close()  #关闭文件
    

    如果我们想循环文件,并且在第九行输出分割的话:

    for index, line in enumerate(file.readlines()):
        if(index == 5):
            print("-------我是分割线-------")
            continue
        print(line.strip())
    
    

    注意: strip()方法是用来去除字符串首尾空格的

    但是当我们打开一个大文件的时候我们就会发现一个问题,file.readlines()是提前将所有行数都先读取出来,再进行操作,那么当我们打开一个几十个G的文件的时候效果可想而知,因此上述方法基本不使用,应该使用以下方法:

    count = 0
    for line in file:
        if count == 9:
            print("-------我是分割线-------")
            count += 1
            continue
        print(line)
        count += 1
    
    

    打开文件的模式有:

    • r, 只读模式(默认)
    • w,只写模式【不可读;不存在则创建;存在则删除内容】
    • a,追加模式【可读;不存在则创建;存在则只追加内容】

    “+”表示可以同时读写某个文件

    • r+,可读写文件【可读;可写;可追加】-----一般使用这个模式
    • w+,可写读文件【可写;可读;可追加】-----基本用不到
    • a+,追加读写文件

    “b”表示处理二进制文件(如:FTP发送上传ISO镜像文件,Linux可忽略,windows处理二进制文件时需要标注)

    • rb,以二进制的模式读取文件,不可以传encoding参数
    • wb,以二进制编码的模式写文件
      f.write("string字符串".encode())

    “U”表示在读取时,可以将 自动转换成 (与r或r+模式同时使用)

    • rU
    • r+U

    文件的方法

    • tell() 当前文件指向的指针,计数方式是按照字符个数
    • seek(字符位置) 查找文件相应字符位置
      seek(0)就是返回到文件开始位置,一般和tell()方法一起使用
    • encoding() 返回当前文件编码格式
    • flush() 刷新当前缓冲区,建议在关闭文件前先flush当前缓冲区。
    模仿进度条:
    	import sys, time
    	for i in range(20):
    	    sys.stdout.write("#")
    	    sys.stdout.flush()
    	    time.sleep(0.1)
    

    在前面,我们已经注意到python写文件的时候,会将之前的内容删除掉,重写覆盖,那么我们如何来修改文件呢?

    文件修改的方式

    • 将文件加载到内存中像VIM那样,再进行修改
    • 打开一个文件,修改完成之后写到新文件里

    修改文件的思路

    1. 打开两个文件
    2. 从源文件逐行读取,边读边写进新文件中
    3. 通过语句进行判断,找到需要需改的地方,修改文件,再将修改过后的内容写到新文件中。
    f = open("yesterday", 'r', encoding="utf-8")
    fnew = open("yesterday.bak", "w", encoding="utf-8")
    
    for line in f:
        if "修改前的语句" == line:
            line = line.replace("修改前的语句", "修改后的语句")
        fnew.write(line)
    f.close()
    fnew.close()
    

    line = line.replace("修改前的语句", "修改后的语句") 注意是line而不是f

    with语句

    为了避免打开文件后忘记关闭,可以通过管理上下文,即:

    with open("需要打开的文件", 'r', encoding="utf-8") as f:
        # 执行语句...
        # 当跳出with程序块时,自动关闭文件
    

    如此方式,当with代码块执行完毕后,内部会自动关闭并释放文件资源。
    在python2.7后,with又支持同时对多个文件的上下文进行管理,即:

    with open("需要打开的文件1") as f, open("需要打开的文件2") as f2:
        # 执行语句...
        # 当跳出with程序块时,自动关闭文件
    
  • 相关阅读:
    Mybatis框架(一)
    maven(一)
    shiro安全框架(二)
    shiro安全框架(一)
    Linux系统
    maven(二)
    Redis存储系统(二)
    Redis存储系统(一)
    1.2 性能测试(效率)
    1.3 压力测试/极限测试(可靠性)
  • 原文地址:https://www.cnblogs.com/bearkchan/p/8046494.html
Copyright © 2020-2023  润新知