• python文件操作


    文件打开方式(mode):

    r , rb(二进制)  只读(rb在读取非文本文件的时候,比如读取MP3,图像,视频等信息的时候)

    w , wb(二进制)  只写

    a , ab(二进制) 追加

    r+ 读写   该模式下,必须是先读取,让后再写入,默认光标是在开头的,准备读取再写入,r+模式下读取内容,无论读取多少,光标显示的多少,在写入或者操作文件的时候都是在结尾进行的操作

    w+,w+b 读写   先将所有内容清空.然后写入最后读取,一开始读不到数据

    a+ 写读(追加写读) a+模式下,不论先读还是后读,都读不到数据

    绝对路径和相对路径:

    1.绝对路径 : 从磁盘根目录开始一直到文件名.

    2.相对路径 : 同一个文件夹下的文件.相对路径可以直接使用文件名.如果是上一层文件夹.则要../

    (推荐使用相对路径,方便传输项目文件给其他人)

    文件操作实例:

    文件读取

    f = open("../def/哇擦.txt", mode="r", encoding="utf-8") 
    #1 将文件全部读取出来
    content = f.read()   #弊端占用内存过大,文件过大容易崩溃
    #2 读取n个字符 
    content = f.read(3)   #如果是rb,则读取的是n个字节
    content2 = f.read(3)  #再读3个字节
    #二进制读取
    f = open("../def/哇擦.txt", mode="rb") 
    content = f.read(3)  #结果b'xe5x8fx8b'
    f = open("../def/哇擦.txt", mode="r", encoding="utf-8") 
    content = f.readline() .strip() # 一次读取一行数据
    
    f = open("../def/哇擦.txt", mode="r", encoding="utf-8")
    lst = f.readlines()       #每行形成一个元素,放到一个列表中,所有内容都读取出来
    
    for line in f:    
        print(line.strip())   # 循环读取,不会产生内存溢出,推荐使用
    
    f.flush() f.close() #文件读取之后文件句柄f一定关闭

     文件写入

    f = open("a1.txt", mode="a", encoding="utf-8")
    f.write("apple")    #追加写入
    f.flush()
    f.close()

    其他操作

    1. seek(n) 光标移动到n位置,移动单位是byte.utf-8的中文部分要是3的倍数

      移动到开头 : seek(0)

      移动到结尾 : seek(0,2)

    2. tell() 获取光标的当前位置

    3.truncate() 截断文件

    修改文件

    1 import os 
    2 with open("a2.txt", mode="r", encoding="utf-8") as f1,     
    3     open("a2_new.txt", mode="w", encoding="UTF-8") as f2:    
    4     for line in f1:        
    5         new_line = line.replace("apple", "pear")        
    6         f2.write(new_line) 
    7     os.remove("a2.txt")    # 删除源⽂件 
    8     os.rename("a2_new.txt", "a2.txt")     # 重命名新⽂件               
  • 相关阅读:
    Android对话框自定义标题
    JSONObject和JSONArray的关系
    Java的List排序
    重写onStart()函数
    SSH框架执行自己定义的SQL语句
    nested exception is org.hibernate.QueryException: could not resolve property
    java.lang.NullPointerException org.apache.struts2.impl.StrutsActionProxy.getErrorMessage(StrutsActionProxy.java:69)
    Java项目打包部署war文件
    一道腾讯面试题
    SSH服务器与Android通信(3)--Android客户端发送数据
  • 原文地址:https://www.cnblogs.com/gracenana/p/10197153.html
Copyright © 2020-2023  润新知