Python文件操作

    1. 文件操作
        open 打开
        f = open(文件路径, mode="模式", encoding="编码格式") 最最底层操作的就是bytes
        打开一个文件的时候获取到的是一个文件句柄.
        绝对路径
            从磁盘根目录开始寻找
        相对路径
            相对于当前程序所在的文件夹
            ../ 上一层文件
            文件夹/ 进入xxx文件夹
    2. mode:
        r: 读取,只读.
            读取文件的相关操作
                1. read()
                    默认: 读取文件内容(全部)
                    read(n) 读取n个字符
                2. readline()  读取一行
                3. readlines() 读取全部. 返回列表
                (最重要)4. for line in f: 每次读取一行内容
        w:
            写入. 只写
            创建文件
            会清空文件
        a:
            也可以创建文件
            追加写
        r+:  对于文件而言. 应该有的操作就两个:读, 写
            读写操作
        w+:
            写读操作
        a+:
            追加写读
        所有带b的表示直接操作的是bytes, 当处理非文本文件的时候.
        rb
        wb
        ab: 断点续传
        r+b
        w+b
        a+b
    3. 文件操作中关于文件句柄的相关操作
        seek() 移动光标
        f.seek(0) 移动到开头(最多)
        f.seek(0, 2) 移动到末尾
            seek:两个参数
                1. 表示偏移量
                2. 从xxx开始偏移, 默认0, 开头   1, 当前位置    2, 末尾
        tell
            返回光标所在的位置
    4. 文件修改,
    文件修改: 只能将文件中的内容读取到内存中, 将信息修改完毕, 然后将源文件删除, 将新 文件的名字改成老⽂文件的名字. 
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", "⼩娃娃") # 重命名新⽂件

    弊端: ⼀次将所有内容进行读取. 内存溢出. 解决方案: 一行一行的读取和操作

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

 

posted @ 2018-12-05 21:58  清茶i  阅读(132)  评论(0编辑  收藏  举报