欢迎光临
我们一起进阶

python文件操作——基本读写模式

扫码或搜索:沉默王二
发送 290992
即可立即永久解锁本站全部文章

概述

  • 通过系统内建函数open()我们可以打开一个文件,得到文件流对象file(后文所有file均指文件流对象,不再赘述);
  • 位置参数name代表文件路径,可以是绝对或相对路径;
  • encoding参数指定文件的编码方式,默认为utf-8,编码错误会导致乱码;
  • mode参数代表以何种模式打开文件,如果打开的是字符流文件,那么有四种基本模式;
  • r=只读模式,w=覆写模式,a=追加模式,x=创写模式(创建文件并写入);
  • 注意文件夹路径必须是存在的,否则会报FileNotFoundError;
  • 读写操作结束,记得关闭已打开的文件流,以释放资源;

只读模式

  • 通过只读模式r打开的文件,只能读不能写,强写会抛异常;
  • 以只读模式打开的文件,文件指针(暂时可以简单理解为光标)在文件开头位置;
  • 通过file.read(n)可以读入指定数量的字符,n不写默认为读入全部;
  • 在读入的过程中,文件指针(暂时可以简单理解为光标)会相应的向后移动n个字符位置;
# 以只读模式打开文件
file = open(r"../res/doc/1.txt", "r", encoding="utf-8")
print(type(file))  # <class '_io.TextIOWrapper'>文件流

# 读入文件内容
content = file.read()#不写参数表示读入全部
content = file.read(3)  # 读入3个字符
print(content)

# 尝试写入数据(只读模式无法写入)
# file.write("反正我也写不进去")#io.UnsupportedOperation: not writable

# 关闭文件流
file.close()

覆写模式

  • 以覆写模式w打开的文件,在文件打开的一刹那文件内容将被清空;
  • 使用file.write(text)向文件中写入一个字符串;
  • 使用file.writelines(strlist)向文件中写入一个字符串列表,每个字符串元素单独占据一行;
  • 以覆写模式打开的文件是不可读的,强读会抛异常;
# 以覆写模式打开文件,会清空文件内容(请谨慎)
file = open(r"../res/doc/1.txt", mode="w", encoding="utf-8")

# 写入内容
file.write("锄禾日当午\n汗滴禾下土\n一本小破书\n一看一下午\n")
file.writelines(["锄禾日当午\n", "汗滴禾下土\n", "一本小破书\n", "一看一下午\n"])

# # 尝试读入文件(不可读)
# file.read()#io.UnsupportedOperation: not readable

# 关闭文件流
file.close()
print("done")

追加模式

  • 已追加模式a打开的文件,文件指针位于文件的末尾;
  • 此时向文件中写入内容,将以追加的方式写入,原来的内容不会被删除;
# 追加模式打开文件
file = open(r"../res/doc/1.txt", "a", encoding="utf-8")
file.write("——悯码农")
file.close()

创写模式

  • 以创写模式x打开的文件必须是一个不存在的文件;
  • 如果文件已经存在会报FileExistsError异常;
  • 使用创写模式结合try…except…我们可以保证打开的都是不存在的文件,而不会覆盖已有的文件;
# 以创写模式打开一个并不存在的文件
file = open(r"../res/doc/1.txt", "x", encoding="utf-8")
print(type(file))

# 向文档中写入数据
file.write("锄禾日当午\n汗滴禾下土\n一本小破书\n一看一下午\n")

# 让写入(缓存在缓冲区中)立刻生效
file.flush()

# 关闭文件流
file.close()
print("done")
赞(1) 打赏
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

小白学堂,学的不止是技术,更是前程

关于我们免责声明

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏