zoukankan      html  css  js  c++  java
  • python全栈开发 * 08知识点汇总 * 180608

        08知识点梳理   文件操作
    一 .文件操作 r (只读)
    1.r (读) rb(字节)
    f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
    content=f.read()
    print(content)

    2.rb(字节) MP3 图像 视频
    f=open("果蔬大杂烩",mode="rb")
    content=f.read()
    print(content)
    #绝对路径: 从磁盘根⽬录开始⼀直到⽂件名. ( "d:/**/b**/") or ("http:/**/**/")
    #相对路径: :同⼀个⽂件夹下的⽂件. 相对于当前这个程序所在的⽂件夹⽽⾔. 如果在同⼀个⽂件夹中. 则相对路径就是这个⽂件名("f/**/**/").
    # 如果在上⼀层⽂件夹. 则要("../**/**/")
    3.读取文件的方法( 五种)
    方法一 read() 文件中的内容全部读取.
    f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
    content=f.read()
    print(content)
    f.close()
    方法二 read(n) 读取n个字符 read(n) 读取n个字符. 需要注意的是. 如果再次读取. 那么会在当前位置继续去读⽽不
    #是从头读, 如果使⽤的是rb模式. 则读取出来的是n个字节
    f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
    content=f.read(7)
    print(content)
    f.close()
    f=open("果蔬大杂烩",mode="rb")
    content=f.read(3)
    print(content)
    f.close()
    方法三 readline() ⼀次读取⼀⾏数据, 注意: readline()结尾, 注意每次读取出来的数据都会有⼀
    #个 所以呢. 需要我们使⽤strip()⽅法来去掉 或者空格
    f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
    content=f.readline()
    print(content.strip())
    f.close()
    方法四 readlines() readlines()将每⼀⾏形成⼀个元素, 放到⼀个列表中. 将所有的内容都读取出来. 所以
    #也是. 容易出现内存崩溃的问题.不推荐使⽤
    f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
    lst=f.readlines()
    for line in lst:
    print(line)
    f.close()
    方法五 循环读取 这种⽅式是组好的. 每次读取⼀⾏内容.不会产⽣内存溢出的问题
    f=open("果蔬大杂烩",mode="r",encoding="UTF-8")
    for line in f:
    print(line)
    f.close()
    # 比较
    # print("刘德华") 各输出各的
    # print("周润发") 各输出各的
    # print("刘德华",end="")
    # print("周润发") 输出"刘德华周润发"
    二 .文件操作 w (写文件)
    1.w (写文件)
    f=open("歌单",mode="w",encoding="UTF-8")
    f.write("开始懂了")
    f.write("我怀念的 ")
    f.write("逆光")
    f.write("绿光")
    f.flush()
    f.close()
    2. wb (字符)
    f=open("菜单",mode="wb")
    f.write("烤全羊".encode("UTF-8"))
    f.write("满汉全席".encode("UTF-8"))
    f.write("北京烤鸭".encode("UTF-8"))
    f.flush()
    f.close()
    三 .文件操作 a (追加)
    1. a (追加)
    f=open("歌单",mode="a",encoding="UTF-8")
    f.write("寓言")
    f.write("阿刁 ")
    f.write("欧若拉")
    f.flush()
    f.close()
    2. ab (字节)
    f=open("歌单",mode="ab")
    f.write("隐形的翅膀".encode("UTF-8"))
    f.write("亲爱的这不是爱情".encode("UTF-8"))
    f.flush()
    f.close()
    四 文件操作 r+ (读写) 先读后写
    f=open("果蔬大杂烩",mode="r+",encoding="UTF-8")
    content=f.read()
    print(content)
    f.write("奇异果")
    f.flush()
    f.close()
    五 文件操作 w+ (写读) 先清空,再写入,最后读取 结果是空
    f=open("歌单",mode="w+",encoding="UTF-8")
    f.write("红豆")
    f.write("流年")
    content=f.read()
    print(content)
    f.close()
    六 .文件操作 a+ (追加读) 不论先读后读 都读不到数据.
    f=open("歌单",mode="a+",encoding="UTF-8")
    content=f.read()
    f.write("七里香")
    print(content)
    七 其他相关操作 seek(n) ; tell() ;truncate() .
    1 .seek(n)光标移到 n 位置
    # 移动的单位是byte. 所以如果是UTF-8的中⽂部分要是3的倍数.,
    # 移到开头seek(0); 移动到结尾: seek(0,2)
    # # (seek的第⼆个参数表⽰的是从哪个位置进⾏偏移, 默认是0 表⽰开头, 1 表⽰当前位置, 2 表⽰结尾. 第一个参数表示偏移量).
    f=open("果蔬大杂烩",mode="r+",encoding="UTF-8")
    f.seek(0)
    content=f.read()
    print(content)
    f.seek(0,2)
    content=f.read()
    print(content)
    2. tell(_) 获取当前光标在什么位置
    f=open("果蔬大杂烩",mode="r+",encoding="UTF-8")
    f.read(5)
    print(f.tell())
    # 结果显示光标在15.(第五个字后面)
    3. truncate() 截断文件 .
    根据光标位置保留前面的内容,删除后面的内容.
    #如果truncate()给了参数,和光标没关系,将文件从头到参数之间的内容保留.
    f=open("歌单",mode="r+",encoding="UTF-8")
    content=f.read(3)
    f.seek(3)
    f.truncate()
    print(content)
    # 深坑请注意: 在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显⽰的是多少. 再写入
    #或者操作⽂件的时候都是在结尾进⾏的操作.
    八 修改文件 with for循环
    1.with
    import os
    with open("五行",mode="r",encoding="UTF-8") as f1,
    open("五行_new",mode="w",encoding="UTF-8")as f2:
    content=f1.read()
    new_content=content.replace("金","银")
    f2.write(new_content)
    os.remove("五行")
    os.rename("五行_new","五行")
    2. for 循环
    import os
    with open("五行",mode="r",encoding="UTF-8") as f1,
    open("五行_new",mode="w",encoding="UTF-8")as f2:
    for line in f1:
    new_line=line.replace("金","银")
    f2.write(new_line)
    os.remove("五行")
    os.rename("五行_new","五行")
  • 相关阅读:
    能登陆QQ ping通外网 但打不开网页
    代码大全书写子程序要注意的几个问题?
    代码大全创建子程序的正当理由
    原创 插入排序算法
    堆结构的实现
    代码大全子程序层上的设计
    五十。java
    四十七。java
    四十九。java
    五十二。java
  • 原文地址:https://www.cnblogs.com/J-7-H-2-F-7/p/9156791.html
Copyright © 2011-2022 走看看