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

    常见的3种操作模式,r、w、a

    #file in 2.X
    # file mode r = read ,w = write , a = append
    # r  模式 就是打开一个文件,只能读不能写
    print(open("lyric").read())
    data = open("lyric").read()
    print(data.replace("Somehow","HAHAHAHA"))   #写入失败
    # w  模式 意味着创建一个文件,旧文件会被覆盖
    f = open("lyric", mode="w")
    data = f.read()
    data = data.replace("Somehow","HAHAHAHA")
    print(data)
    f.write(data)                 #以上操作会将文件中所有内容覆盖
    f.write("What happend...")      #重新写入数据
    f.write("What happend...")
    f.write("What happend...")
    # a 模式 以追加的形式打开文件,会写在文件最后
    f = open("lyric", mode="a")
    f.write("
     What happend...")
    f.close()

    修改文件:

    # @1 方式 
    #先打开改掉内容之后再关闭
    f = open("lyric",mode="r",encoding="utf-8")
    data = f.read()
    data = data.replace("Somehow","HAHA")
    f.close()
    #再以覆盖的模式打开再写入
    f = open("lyric",mode="w",encoding="utf-8")
    f.write(data)
    f.close()
    弊端:占用内存
    # @2 方式
    import os
    f = open("lyric",mode="r",encoding="utf-8")
    f_new = open("lyric_new",mode="w",encoding="utf-8")
    #循环读,如果遇到则修改;最后写入到一个新文件中
    for line in f:
        if "Somehow" in line:
            line = line.replace("Somehow","HAHAHA")
        f_new.write(line)
    f.close()
    f_new.close()
    os.remove("lyric")                  #删除原文件
    os.rename("lyric_new","lyric")      #重命名新文件
    弊端:占用硬盘

    其他操作:

    #r+  模式   追加+读,可以定长修改
    f = open("lyric","r+",encoding="utf-8")     #encoding如果不声明,默认使用操作系统的编码来解释文件
    print(f.read())
    f.write("---------test")
    f.close()
    #w+  模式   写+读,清空原文件再写入新文件
    f = open("lyric","w+",encoding="utf-8") 
    print(f.read())
    f.write("---------test")
    f.close()
    #小技巧
    f = open("lyric","r",encoding="utf-8")
    print('cursor:',f.tell())       #打印光标,输出的数字是第n个字符
    f.seek(10)                      #移动10个光标(字节)
    f.read(6)                       #读取6个字符
    f.flush()                       #将写入内存的数据写入硬盘
    f.close()
    #a+  模式    追加+读   
    #rb  模式    以二进制模式打开文件,不能声明encoding
    #wb  模式    以二进制写入文件,必须写入bytes格式,需要encoding
  • 相关阅读:
    【MySQL】【2】数字排序问题
    【MySQL】【1】表中存在重复记录,删除保留其中一条
    poj 1811 Prim test
    Yours 的博客开张啦!
    P1044
    P1103
    hustwinter1-B
    hustwinterC
    hustwinter1-A
    hdu 2138 How many prime numbers
  • 原文地址:https://www.cnblogs.com/zhaomeng/p/10989738.html
Copyright © 2011-2022 走看看