• Python---文件打开、读取、写入


    打开文件 open()

    打开已存在文件或创建一个新文件

    语法:open(name,mode,encoding)

    name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
    mode:设置打开文件的模式(访问模式): r:只读、w:写入、a:追加等。
    encoding:编码格式(推荐使用UTF-8)

    例子:

    1. f = open('test.txt', 'r', encoding="UTF-8") # 注意:编码格式需要用关键字作为参数传递
    2. print(type(f)) #

    读取文件 

    read()方法: 读取数据的长度

    语法:文件对象.read(num)   -----  结果:字符串

    num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据

    例子:

    1. f = open('test.txt', 'r', encoding="UTF-8")
    2. print(f"读取10个字节的结果{f.read(5)}") # 读取内容:我是测试文
    3. print(f"read方法读取全部内容是{f.read()}") # 注意:这次会接着上一次接着读取
    readlines()方法:  读取全部   ------  结果:列表

    语法:文件对象.readlines( )

    readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

    例子:

    1. f = open('test.txt', 'r', encoding="UTF-8")
    2. print(f"read方法读取全部内容是{f.read()}") # 读取全部
    3. lines= f.readlines()
    4. print(type(lines)) #
    5. print(lines) # 空值,原因:第2行已经读取了全部
    readline()方法:一次读取一行   -----  结果:字符串

    语法:文件对象.readlines( )

    例子:

    1. f = open('test.txt', 'r', encoding="UTF-8")
    2. line1 = f.readline()
    3. print(type(line1),line1) # 我是测试文件1 (读取一行内容)
    for 循环读取文件行

    例子:

    1. # f = open('test.txt', 'r', encoding="UTF-8")
    2. # for line2 in f:
    3. # print(line2) # 读取每一行数据
    4. for line3 in open("test.txt","r",encoding="UTF-8"):
    5. print(line3) # 读取每一行数据
    关闭文件 close()  --- 解除文件的占用

    语法:文件对象.close()

    with open 语法

    语法:with open(name,mode,encoding) as 文件名:

    通过在with open的语句块中对文件进行操作,可以在操作完成后自动关闭close文件,避免遗忘掉close方法

    例子:

    1. with open('test.txt', 'r', encoding="UTF-8") as f:
    2. for line4 in f:
    3. print(line4)

     文件写入 write()   

    文件存在会覆盖,文件不存在会创建

    语法:文件对象.write()  --- 打开文件,通过w模式

    注意:

    直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
    当调用flush的时候,内容会真正写入文件
    这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)

    文件刷新 flush()

    语法:文件对象.flush()

    例子:

    1. # f = open("test.txt", "w", encoding="UTF-8")
    2. # f.write("hello") # 文件写入:内容写入内存中
    3. # f.flush() # 文件刷新:将内存中积攒的内容,写入到硬盘的文件中
    4. # f.close() # 关闭文件:内置了flush()功能
    5. f = open("test.txt", "w", encoding="UTF-8")
    6. f.write("你好") # 会覆盖吧上面写入的内容

    文件追加操作 write() 

    语法:文件对象.write()  --- 打开文件,通过a模式

    1. open("test.txt","a",encoding="UTF-8")
    2. f.write("\nhi1") # 换行输入
    3. f.flush()
    4. f.close()

    小案例:

    1. # 小案例
    2. fr = open("test.txt", "r", encoding="UTF-8")
    3. fw = open("test1.txt", "a", encoding="UTF-8")
    4. for i in fr:
    5. # print(i)
    6. if i.count("测试") >= 1:
    7. continue
    8. else:
    9. fw.write(i)
    10. print(fw)
    11. fr.close()
    12. fw.close()
    13. # fr = open("test.txt", "r", encoding="UTF-8")
    14. # fw = open("test1.txt", "a", encoding="UTF-8")
    15. # for i in fr:
    16. # line = i.strip() # 去除换行符
    17. # if line.split(",")[4] == "测试": # 以 , 分割字符串
    18. # continue
    19. # else:
    20. # fw.write(line)
    21. # fw.write("\n") # 添加换行符
    22. # fr.close()
    23. # fw.close()

  • 相关阅读:
    电子统计台账:中文标记月度流水账格式数据的转换,以及过滤模板的普遍适配性
    有自动交易股票的软件么,怎么实现全自动交易?
    使用RAMMap+PoolMon分析Windows内存使用异常问题
    3.7.1、MAC地址(数据链路层)
    顺序表之(条条有注释助你吃透顺序表以及基于顺序表实现的通讯录)
    【CIKM 2023】扩散模型加速采样算法OLSS,大幅提升模型推理速度
    R数据分析:扫盲贴,什么是多重插补
    JVM简单理解
    基于maven的项目搭建(已跑通)
    手写内存泄漏检测组件
  • 原文地址:https://blog.csdn.net/weixin_52053631/article/details/132924640