day08 文件操作

余生颓废 提交于 2020-01-10 03:27:43

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'\xe6\xaf\x85\xe5\x93\xa5, \xe5\xa4\xaa\xe7\x99\xbd, wuse\n\xe5\x91\xb5\xe5\x91\xb5\n\xe6\x97\xa5\xe5\xa4\xa9' 

  3 绝对路径和相对路径:

1. 绝对路路径:从磁盘根⽬目录开始⼀一直到⽂文件名.

2. 相对路路径:同⼀一个⽂文件夹下的⽂文件. 相对于当前这个程序所在的⽂文件夹⽽而⾔言. 如果在同 ⼀一个⽂文件夹中. 则相对路路径就是这个⽂文件名. 如果在上⼀一层⽂文件夹. 则要.返回上层文件然后在进入

3 readline() ⼀一次读取⼀一⾏行行数据, 注意: readline()结尾, 注意每次读取出来的数据都会有⼀一 个\n 所以呢. 需要我们使⽤用strip()⽅方法来去掉\n或者空格

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  修改⽂文件以及另⼀一种打开⽂文件的⽅方式    ⽂文件修改: 只能将⽂文件中的内容读取到内存中, 将信息修改完毕, 然后将源⽂文件删除, 将新 ⽂文件的名字改成老⽂文件的名字.

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!