文件操作
相关操作
# import os
# print(os.getcwd()) # 查看当前工作路径
# 其他操作:
# tell() 查看光标 -- 返回光标的当前位置(字节)
# seek 移动光标
# seek(0,0) # 移动光标到文件开始位置
# seek(0,1) # 光标的当前位置
# seek(0,2) # 移动光标到文件的末尾位置
# seek(3) # 按照字节移动
1.基本结构
f = open ( '文件路径文件名' ,mode = '读或写' ,encoding = '编码')用什么编码打开,f是文件句柄
content = f.read()
print(content)
f.close()
另一种方式
with open("路径",mode="模式",encoding="编码") as f#赋值: #
\open("a",mode="w",encoding="gbk") as f1:
#缩进 print(f.read())
# with open 帮助自动关闭文件
# with open 同时操作多个文件
2.读模式(r,rb,r+)
r模式
f = open("a",mode="r",encoding="gbk")
content = f.read() # 全部读取read()将文件中的内容全部读取出来;
#弊端 如果文件很大就会非常的占用内存,容易导致内存崩溃
c1 = f.read(3) # 字符读取
print(f.readline()) # 读取一行内容#括号内加数字是读当前行的几个字符,不会读下一行
print(f.readlines())#一行一行读取,存储到列表中 \n是换行
f.close()#关闭文件
f = open("a",mode="r",encoding="gbk")
for i in f:
print(i)#一行一行读
rb模式
f = open('文件路径名字',mode='rb')#rb读出来的是bytes类型,可以用来打开未知编码的文件或图片
content = f.read()
print(content)
f.close()
结果:
b'\xe6\xa0\x87\xe9\xa2\x98\xe5\xbe\x88\xe5\xa5\xbd'
r+模式
#r+模式一定要记住是先读后写
#深坑请注意: 在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显示的是多少. 再写入
#或者操作文件的时候都是在结尾进行的操作.
2写模式(w,wb,w+)
w模式
在写文件的时候我们要养成一个写完文件就刷新的习惯. 刷新flush()
f = open('../path1/小娃娃.txt#文件路径',mode='w'写模式,encoding='utf-8')
f.write('太白很白')f.flush()#刷新解放内存
f.close()
写的注意事项
当选择使用w模式的时候,在打开文件的时候就就会把文件中的所有内容都清空,然后在操作
注意点:如果文件不存在使用w模式会创建文件,文件存在w模式是覆盖写,在打开文件时会把文件中所有的内容清空.
wb模式
- 写入是用bytes写入来存储,一般是把图片等转化成字节形式来写入存储
w+模式
- 先将所有的内容清空,然后写入.最后读取.但是读取的内容是空的,不常用
3.追加(a,ab,a+)
只要是a或者ab,a+都是在文件的末尾写入,不论光标在任何位置.
在追加模式下,我们写入的内容后追加在文件的末尾
f1 = open ( '../path1/小娃娃.txt' ,mode = 'a' ,encoding = ('utf-8' )
msg =f1.write('这支烟灭了以后')
4.修改文件
# 修改文件:
# with open("原文件")as f,open("新文件")as f1:
# f.for循环的读取
# f1.for循环的写入
# import os
# os.rename("原文件名字",备份名字") # 对原文件进行备份
# os.rename("新文件名字","原文件名字") # 把新文件改成原文件的名字