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", "?娃娃") # 重命名新?件
Python文件操作
原文:https://www.cnblogs.com/wangm-0824/p/10073722.html