zoukankan      html  css  js  c++  java
  • Python档案袋(文件系列操作 )

    文件读写基础

    简单的读文件:

     1 # r 表示只能读
     2 #打开文件,得到文件光标对象,文件不存在则报错
     3 f=open("ww.txt","r",encoding="utf-8")
     4 
     5 #读取文件内容
     6 res=f.read()
     7 
     8 #关闭文件
     9 f.close()
    10 
    11 print(res)

    读文件补充:

     1 # r 表示只能读
     2 #打开文件,得到文件光标对象,文件不存在则报错
     3 f=open("ww.txt","r",encoding="utf-8")
     4 
     5 #读取文件内容,一次性全部读取
     6 #rengs=f.read()
     7 
     8 #读一行
     9 #res=f.readline()
    10 
    11 #将文件内容变成一个数组,每行一个元素,一次性全部读取
    12 #res=f.readlines()
    13 
    14 #print(res)
    15 
    16 #每行循环打印,一次性全部读取
    17 #for linex in f.readlines():
    18 #   print(linex)
    19 
    20 #每行循环打印,一次性读一行,效率高,推荐
    21 for linex in f:
    22     print(linex)
    23 
    24 #查看文件指针位置
    25 #汉字长度为3,换行符长度为2,字母长度为1,与文件编码相关
    26 print(f.tell())
    27 #指针回退,0表示文件首部
    28 f.seek(0)
    29 
    30 #打印文件编码
    31 print(f.encoding)
    32 
    33 #打印文件名
    34 print(f.name)
    35 
    36 #关闭文件
    37 f.close()

    简单的写文件:

     1 # w  表示只能写
     2 #打开文件,得到文件光标对象,如果文件不存在则新建,如果存在则覆盖
     3 f=open("ww.txt","w",encoding="utf-8")
     4 
     5 #写文件,返回写入的字数,中文也是1,输出结果为:24
     6 res=f.write("dongxiao
    dongdadong
    东小东东")
     7 
     8 #f.flush() #强制刷新,写文件时一般有缓冲区,缓冲区满才会写入
     9 #print(f.truncate(2)) #文件截取并更新原文件,从头开始截取,长度与文件编码相关
    10 
    11 #关闭文件
    12 f.close()
    13 print(res) #输出:24

    简单的追加

    在文件内容尾部添加数据

     1 # a  表示追加,只能写
     2 #打开文件,得到文件光标对象,如果文件不存在则新建
     3 f=open("ww2.txt","a",encoding="utf-8")
     4 
     5 #写文件,返回写入的字数,中文也是1,输出结果为:7
     6 res=f.write("
    追加的东小东")
     7 
     8 #关闭文件
     9 f.close()
    10 
    11 print(res) #输出:7

    二进制数据

    设计图片或者视频数据时可以使用

    二进制文件读:

    # rb  表示二进制只读
    
    #打开文件,不存在时报错
    f=open("ww.txt","rb")
    
    res=f.read()
    print(res)
    
    #关闭文件
    f.close()

    二进制文件写:

    # wb  表示二进制只写
    
    #打开文件,不存在时创建
    f=open("ww.txt","wb")
    
    #必须经过编码成二进制才能进行写
    res=f.write("东小东dong".encode("utf-8"))
    print(res) #输出:13
    
    #关闭文件
    f.close()

    文件内容更改:

    实现一个文件的内容复制到另一个文件,并在文件复制的路上,对文件数据的部分修改

    #打开两个文件,分别为写和读
    fr=open("ww.txt","r",encoding="utf-8")
    ft=open("ww1.txt","w",encoding="utf-8")
    
    #逐行取内容
    for lienx in fr:
        print(lienx)
    
        #寻找dong是否在字符串中
        if "dong" in lienx:
            #替换
            lienx=lienx.replace("dong","dongxiaodong")
    
        ft.write(lienx)
    
    #关闭文件
    fr.close()
    ft.close()

     

    其他方法补充

    读写方式操作文件:

     1 # r+  表示读写
     2 
     3 #打开文件,不存在是报错
     4 f=open("ww.txt","r+",encoding="utf-8")
     5 
     6 print(f.tell())
     7 #
     8 res=f.write("dongxiao
    dongdadong
    东小东东")
     9 print(res)
    10 
    11 f.seek(0) #移动文件指针
    12 
    13 res=f.read()
    14 print(res)
    15 
    16 
    17 #关闭文件
    18 f.close()

    写读方式操作文件:

    # w+  表示写读
    
    #打开文件,不存在时创建
    f=open("ww8.txt","w+",encoding="utf-8")
    
    #以覆盖方式进行写文件
    res=f.write("dongxiao
    dongdadong
    东小东东")
    print(res)
    
    #此时光标在结尾,必须移动光标
    f.seek(0)
    
    res=f.readline()
    print(res)
    
    #关闭文件
    f.close()

    追加写读方式操作文件:

     1 # a+  表示追加写读
     2 
     3 #打开文件,不存在时创建
     4 f=open("ww10.txt","a+",encoding="utf-8")
     5 
     6 #以追加方式进行写文件
     7 res=f.write("dongxiao
    dongdadong
    东小东东")
     8 print(res)
     9 
    10 #此时光标在结尾,必须移动光标
    11 f.seek(0)
    12 
    13 res=f.read()
    14 print(res)
    15 
    16 
    17 #关闭文件
    18 f.close()

    with open……as… 文件操作可以避免忘记手动关闭文件,利用缩进特性实现,下面是如上相同功能实现。

    #打开两个文件,分别为写和读
    with open("ww.txt","r",encoding="utf-8") as fr,open("ww1.txt","w",encoding="utf-8") as ft:
        # 逐行取内容
        for lienx in fr:
            print(lienx)
    
            # 寻找dong是否在字符串中
            if "dong" in lienx:
                # 替换
                lienx = lienx.replace("dong", "dongxiaodong11")
    
            ft.write(lienx)

    获取文件目录:

    import os
    
    print(os.path.abspath(__file__))#得到程序的绝对路径
    print(os.path.dirname(os.path.abspath(__file__)))#得到程序的绝对路径目录名
    
    print(__file__) #返回程序的相对路径
  • 相关阅读:
    Laya list 居中
    Laya for...in和for each...in
    idea中tomcat启动失败

    通过Mock测试控制器
    Mybatis查询sql传入一个字符串传参数,报There is no getter for property named 'ids' in 'class java.lang.String'。
    Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099
    System.getProperty("XXX")方法
    linux命令
    JDK,IDEA,Tomcat,maven,MySQL的安装
  • 原文地址:https://www.cnblogs.com/dongxiaodong/p/10493599.html
Copyright © 2011-2022 走看看