zoukankan      html  css  js  c++  java
  • python新手学习之文件读写之修改

    文件除r、w、a方式打开外,还可以有多种组合方式如r+ w+ a+等多种方式

    1、r+ 读写模式介绍,开始读是从一行开始读,写永远从最后开始写(类似于追加)

    #
    f = open("test.txt","r+",encoding ="utf-8")
    f.readline()
    f.readline()
    f.readline()
    # 不管如何读或者是seek。文件永远从尾部追加。写时候,不会影响读光标位置。
    print("当前光标位置:",f.tell())
    f.write("
    测试r+11")
    print("第一次插入当前光标位置:",f.tell())
    print(f.readline())
    print("当前光标位置:",f.tell())
    f.write("
    测试r+22")
    print("第二次当前光标位置:",f.tell())
    print(f.readline())
    print(f.read())
    
    
    
    E:UsersxiajinqiPycharmProjects	wodayvenvScriptspython.exe E:/Users/xiajinqi/PycharmProjects/twoday/file2.py
    当前光标位置: 51
    第一次插入当前光标位置: 423
    追加2
    
    当前光标位置: 423
    第二次当前光标位置: 435
    追加3
    
    追加4
    追加5
    追加6
    追加7
    追加8
    追加9
    追加10测试r+
    测试r+
    测试r+
    测试r+
    测试r+
    测试r+
    测试r+
    测试r+
    测试r+
    测试r+11
    测试r+22
    测试r+11
    测试r+22
    测试r+11
    测试r+22
    测试r+11
    测试r+22
    测试r+11
    测试r+22
    测试r+11
    测试r+22
    测试r+11
    测试r+22
    测试r+11
    测试r+22

    2、w+ 写读(创建一个新的文件),读完以后,光标会在尾部,读时候需要从seek.并且读不影响写入到位置。在尾部写入。

    #  w+相对使用较少。创建一个新的文件读写
    f = open("test2.txt","w+",encoding='utf-8')
    f.write("1----------
    ")
    f.write("2----------
    ")
    f.write("3----------
    ")
    print(f.readline())
    print(f.tell())
    f.seek(0)
    print(f.readline())
    f.write("test----------
    ")
    f.seek(0)
    print(f.read())
    
    E:UsersxiajinqiPycharmProjects	wodayvenvScriptspython.exe E:/Users/xiajinqi/PycharmProjects/twoday/file2.py
    
    39
    1----------
    
    1----------
    2----------
    3----------
    test----------
    
    
    Process finished with exit code 0


    3  a +  追加读。不会创建新文件。在文件后面追加。

    #  w+相对使用较少。创建一个新的文件读写
    f = open("test2.txt","a+",encoding='utf-8')
    f.write("1----------
    ")
    f.write("2----------
    ")
    f.write("3----------
    ")
    print(f.readline())
    print(f.tell())
    f.seek(0)
    print(f.readline())
    f.write("test----------
    ")
    f.seek(0)
    print(f.read())

    4、rb和wb 以二进制方式读写。

    #  w+相对使用较少。创建一个新的文件读写
    f = open("test2.txt","rb")
    print(f.readline())
    f.close()
    
    #.encode() 默认使用
    f =  open("test2.txt","wb")
    print(f.write("binnary".encode()))
    f.close()
    
    f = open("test2.txt","rb")
    print(f.readline())
    f.close()


    5、文件修改,将文件中的内容替换。

    # 将流年未亡香樟依旧 中 将流年未亡 改为时光已逝
    old_file =  open("test.txt",'r',encoding="utf-8")
    new_file =  open("test.txt.bak","w",encoding="utf-8")
    
    for line  in  old_file :
        if "流年未亡香樟依旧" in line :
            line = line.replace("流年未亡香樟依旧","时光已逝香樟依旧")
        new_file.write(line)
    old_file.close()
    new_file.close()
    
    
    
    歌词内容:
    
    时光雨洒落在你我心里
    消失了感情在脸上留守
    时光已逝香樟依旧
    
    夏天终于走到了最后
    
    多少的执着输给了时间
    
    多少的泪水流过了青春

    5、python with   open("test.txt","r",encoding:"utf-8") as f 的使用

    with  open("test.txt",'r',encoding="utf-8") as f  :
        print(f.read())
    #打开多个文件
    with  open("test.txt",'r',encoding="utf-8") as f1 ,
        open("test.txt",'r',encoding="utf-8")  as f2 :
        print(f.read())
    

    6、python实现shel的替换查找工作

    # Author : xiajinqi
    import sys
    operotor_type = sys.arg[1]
    find_file = sys.argv[2]
    find_str = sys.argv[3]
    replace_str = sys.arg[4]
    
    if operotor_type == 'f' :
        with  open(find_file, 'r+', encoding="utf-8") as  f:
            for line in f:
                if find_str in line:
                    print(line)
                else:
                    print("查找的内容不存在")
    elif  operotor_type == 'r' :
        with  open(find_file, 'r+', encoding="utf-8") as  f1,
                open("test.bak", 'w+', encoding="utf-8") as  f2:
            for line in f1:
                if find_str in line:
                    line =line.replace(find_file,find_str,replace_str)
                f2.wirte(line)
    else :
        print("usage:python find.py f/r filename findstr replacestr")
    良禽择木而栖 贤臣择主而侍
  • 相关阅读:
    第一节 49_ref_out 简单
    第一节 38函数 简单
    第二节 2面向对像简介 简单
    第一节 42字符串基础 简单
    第二节 3属性 简单
    第一节 33enum枚举 简单
    Java jdbc 数据库
    css 使IE和FIREFOX下变为手型
    JS调用PageMethods
    USB设备量产导致通用串行总线控制器显示感叹号解决办法
  • 原文地址:https://www.cnblogs.com/xiajq/p/8733067.html
Copyright © 2011-2022 走看看