python day08--文件操作

Posted on 2018-11-10 16:52  飞行的蟒蛇  阅读(148)  评论(0编辑  收藏  举报

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