zoukankan      html  css  js  c++  java
  • Python--文件操作

    Python 基础-文件操作

    文件处理流程

    1.打开文件,得到文件句柄并赋值给一个变量

    2.通过句柄对文件进行操作

    3.关闭文件

     r模式,默认模式,文件不存在则报错

    w模式,文件不存在则创建,文件存在则覆盖

    a模式,文件不存在则创建,文件存在则不会覆盖,写内容会以追加的方式写(写日志文件的时候常用),追加模式是一种特殊的写模式

    b(rb,wb,ab)模式:不用加encoding:utf-8

    基本操作

    打开文件

    open(path, flag[, encoding][, errors])
    path:要打开文件的路径
    flag:打开文件的方式
    r   以只读的方式打开文件,文件的描述符放在文件的开头   
    rb  以二进制格式打开一个文件用于只读,文件的描述符放在文件的开头
    r+  打开一个文件用于读写,文件的描述符放在文件的开头
    w   打开一个文件只用于写入,如果该文件已经存在会覆盖,如果不存在则创建一个新文件
    wb  打开一个文件只用于写入二进制,如果该文件已经存在会覆盖,如果不存在则创建一个新文件
    w+  打开一个文件用于读写,如果该文件已经存在会覆盖,如果不存在则创建一个新文件
    a   打开一个文件用于追加,如果文件存在,文件描述符将会放在文件末尾
    a+  
    encoding:编码格式
    errors:错误处理
    
    path = r"C:UsersDesktopfile1.txt"
    
    #ignore  忽略错误
    f = open(path, "r",encoding="gbk")

    打开文件的模式有:

    • r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
    • w,只写模式【不可读;不存在则创建;存在则清空内容】
    • x, 只写模式【不可读;不存在则创建,存在则报错】
    • a, 追加模式【可读;   不存在则创建;存在则只追加内容】

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

    • r+, 读写【可读,可写】
    • w+,写读【可读,可写】
    • x+ ,写读【可读,可写】
    • a+, 写读【可读,可写】

     "b"表示以字节的方式操作

    • rb  或 r+b
    • wb 或 w+b
    • xb 或 w+b
    • ab 或 a+b

     注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

     读文件内容

    # 1、读取文件全部内容
    str1 = f.read()
    print(str1)
    
    # 2、读取指定字符数
    str2 = f.read(10)
    print("*"+str2+"*")
    str3 = f.read(10)
    print("*"+str3+"*")
    
    # 3、读取整行,包括"
    "字符
    str4 = f.readline()
    print(str4)
    str5 = f.readline()
    print(str5)
    
    # 4、读取指定字符数
    str6 = f.readline(10)
    print(str6)
    
    # 5、读取所有行并返回列表
    list7 = f.readlines()
    print(list7)
    
    # 6、若给定的数字大于0,返回实际size字节的行数
    list8 = f.readlines(20)
    print(list8)
    
    # 7、修改描述符的位置
    f.seek(10)
    str9 = f.read()
    print(str9)

    关闭文件

    f.close()

    #   一个完整的过程
    try:
        f1 = open(path,"r", encoding="gbk")
        print(f1.read())
    finally:
        if f1:
            f1.close()
    with open(path,"r",encoding="gbk") as f2:
        print(f2.read())

    写文件

    path = r"C:UsersDesktopfile4.txt"
    f = open(path,"w")
    
    #   1、将信息写入缓冲区
    f.write("lee is a good man")
    
    #   2、刷新缓冲区
    #   直接把内部缓冲区的数据立刻写入文件,而不是被动的等待自动刷新缓冲区写入
    f.flush()
    f.write("lee is a good man
    ")
    f.close()
    
    with open(path,"a") as f:
        f.write("good man")
    with open('a.txt','w')  as  f:
      pass
    
    with open('a.txt','r')  as read_f,open('b.txt','w')  as  write_f:
      data=read_f.read()
      write_f.write(data)
    path = r"C:UsersyanjiDesktopday7	est1"
    with open(path,"wb") as f3:
        str = "lee is a good man"
        f3.write(str.encode("utf-8"))
    with open(path,"rb") as f2:
        data = f2.read()
        print(data)
        print(type(data))
        newDate = data.decode("utf-8")
        print(newDate)
        print(type(newDate))
  • 相关阅读:
    C# 中的栈和堆
    C# 中的基本数值类型
    多个 .NET 框架
    简单介绍托管执行和 CLI
    C# 控制台输入和输出
    在 C# 中使用变量
    C# 语法基础
    LeetCode 1482. 制作 m 束花所需的最少天数
    C# 基础(更新中)
    圆形靶内的最大飞镖数量
  • 原文地址:https://www.cnblogs.com/yanjieli/p/9699701.html
Copyright © 2011-2022 走看看