• python day08--文件操作


    python文件操作

    一、初识文件操作

    1.文件操作有几种(r,w,a,rb,wb,r+.w+)默认适用的是只读模式。

    二、只读操作(r,rb)

    1.read() 将文件中的内容全部读取出来. 弊端: 占内存. 如果文件过大.容易导致内存崩溃

    f=open('文件名','r',encoding='utf-8')#文件和代码在一个路径,相对路径
    a=f.read()
    f.flush()
    f.close()
    print(a)

    f = open("../def/哇擦.txt", mode="r", encoding="utf-8")#循环读取. 这种方式是最好的. 每次读取一⾏内容.不会产⽣内存溢出的问题.
    for line in f:
      print(line.strip())

    2.(rb的作⽤: 在读取非文本文件的时候. 比如读取MP3. 图像. 视频等信息的时候就需要⽤到rb. 因为这种数据是没办法直接显示出来的. 在后⾯面我们文件上传下载的时候还会用到)

    f=open('文件名','rb')#bytes类型
    a=f.read()
    f.flush()
    f.close()
    print(a)

    三、写入文件(w,wb)

    1.写的时候注意. 如果没有文件. 则会创文件, 如果文件存在. 则将原件中原来的内容删除, 再写入新内容

    f = open("⼩小娃娃", mode="w", encoding="utf-8")
    f.write("⾦金金⽑毛狮王")
    f.flush() # 刷新. 养成好习惯
    f.close()

    四、追加

    1.在追加模式下. 我们写入的内容会追加在⽂文件的结尾.

    f = open("⼩小娃娃", mode="a", encoding="utf-8")
    f.write("麻花藤的最爱")
    f.flush()
    f.close()

    五、读写模式

    1.对于读写模式. 必须是先读. 因为默认光标是在开头的. 准备读取的. 当读完了了之后再进行

    写入. 我们以后使用频率最高的模式就是r+。

    f = open("⼩小娃娃", mode="r+",encoding='utf-8')
    s=f.read()
    print(s)
    f.write("看见")
    f.flush()
    f.close()

    六、其他操作

    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) # 再次将光标移动到开头
    f.seek(0, 2) # 将光标移动到结尾
    content2 = f.read() # 读取内容. 什什么都没有
    print(content2)
    f.seek(0) # 移动到开头
    f.write("张国荣") # 写⼊入信息. 此时光标在9 中⽂文3 * 3个 = 9
    f.flush()
    f.close()

    七、修改文件以及打开文件的另一种方式

    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", "⼩小娃娃") # 重命名新⽂文件

     

  • 相关阅读:
    rails s 命令不起作用
    ubuntu下virtualbox共享usb
    ubuntu15.04 无法识别exfat格式
    .net core 2.2 修改IdentityUser主键标识类型
    Mac os 安装node.js及环境变量的配置过程
    常见互联网网络名词整理
    assert的用法
    Mac系统中 改变 pip总是默认安装在Mac上自带的python上为python3
    测试工程师的发展之路
    MySQL的mysql-8.0.17-winx64版本安装过程中遇到的问题
  • 原文地址:https://www.cnblogs.com/snackpython/p/9939871.html
Copyright © 2020-2023  润新知