day08 文件操作
Posted daien522556
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day08 文件操作相关的知识,希望对你有一定的参考价值。
1. 初识?文件操作 2. 只读(r, rb) 3. 只写(w, wb) 4. 追加(a, ab) 5. r+读写 6. w+写读 7. a+写读(追加写读) 8. 其他操作?方法 9. ?文件的修改以及另?一种打开?文件句句柄的?方式
2 只读操作(r, rb)
需要注意encoding表?示编码集. 根据?文件的实际保存编码进?行行获取数据, 对于我们?而?言. 更更 多的是utf-8. rb. 读取出来的数据是bytes类型, 在rb模式下. 不能选择encoding字符集.
f = open("护?士少妇嫩模.txt",mode="r", encoding="utf-8") content = f.read() print(content) f.close(
rb的作?用: 在读取?非?文本?文件的时候. ?比如读取MP3. 图像. 视频等信息的时候就需要?用到 rb. 因为这种数据是没办法直接显?示出来的. 在后?面我们?文件上传下载的时候还会?用到. 还有.
我们看的直播. 实际上都是这种数据.
f = open("护?士少妇嫩模.txt",mode="rb" ) content = f.read() print(content) f.close() 结果: b‘xe6xafx85xe5x93xa5, xe5xa4xaaxe7x99xbd, wuse xe5x91xb5xe5x91xb5 xe6x97xa5xe5xa4xa9‘
3 绝对路径和相对路径:
1. 绝对路路径:从磁盘根?目录开始?一直到?文件名.
2. 相对路路径:同?一个?文件夹下的?文件. 相对于当前这个程序所在的?文件夹?而?言. 如果在同 ?一个?文件夹中. 则相对路路径就是这个?文件名. 如果在上?一层?文件夹. 则要.返回上层文件然后在进入
3 readline() ?一次读取?一?行行数据, 注意: readline()结尾, 注意每次读取出来的数据都会有?一 个 所以呢. 需要我们使?用strip()?方法来去掉 或者空格
4. readlines()将每?一?行行形成?一个元素, 放到?一个列列表中. 将所有的内容都读取出来. 所以 也是. 容易易出现内存崩溃的问题.不推荐使?用
f = open("../def/哇擦.txt", mode="r", encoding="utf-8") lst = f.readlines() print(lst) for line in lst: print(line.strip())
5. 读写模式(r+, r+b) 对于读写模式. 必须是先读. 因为默认光标是在开头的. 准备读取的. 当读完了了之后再进?行行 写入. 我们以后使?用频率最?高的模式就是r+
所以记住: r+模式下. 必须是先读取. 然后再写入
6 写读(w+, w+b) 先将所有的内容清空. 然后写入. 最后读取. 但是读取的内容是空的, 不常?用
有?人会说. 先读不就好了了么? 错. w+ 模式下, ?一开始读取不到数据. 然后写的时候再将原来的内容清空. 所以, 很少?用.
7追加读(a+) a+模式下, 不论先读还是后读. 都是读取不到数据
8. seek(n) 光标移动到n位置, 注意, 移动的单位是byte. 所以如果是UTF-8的中?文部分要 是3的倍数. 通常我们使?用seek都是移动到开头或者结尾. 移动到开头: seek(0) 移动到结尾: seek(0,2) seek的第?二个参数表?示的是从哪个位置进?行行偏移, 默认是0, 表 ?示开头, 1表?示当前位置, 2表?示结尾
2. tell() 使?用tell()可以帮我们获取到当前光标在什什么位置
3. truncate() 截断?文件
注: 深坑请注意: 在r+模式下. 如果读取了了内容. 不论读取内容多少. 光标显?示的是多少. 再写入 或者操作?文件的时候都是在结尾进?行行的操作. 所以如果想做截断操作. 记住了了. 要先挪动光标. 挪动到你想要截断的位置. 然后再进?行行截断 关于truncate(n), 如果给出了了n. 则从开头开头进?行行截断, 如果不给n, 则从当前位置截断. 后?面 的内容将会被删除
9 修改?文件以及另?一种打开?文件的?方式 ?文件修改: 只能将?文件中的内容读取到内存中, 将信息修改完毕, 然后将源?文件删除, 将新 ?文件的名字改成老?文件的名字.
以上是关于day08 文件操作的主要内容,如果未能解决你的问题,请参考以下文章