Python进阶(3)--文件读写

文件读写

读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。

在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

读写.png

故此,我们要完成一个文件的读写需要先打开文件——读写操作——关闭文件。

打开文件

如何打开一个文件呢?是不是还需要找到文件所在的位置呐?

open()方法

open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)

一般形式:

fp = open(file,mode,rencoding)

参数说明:

file: 必需,文件路径(相对或者绝对路径)

mode: 可选,文件打开模式,默认为r

========= ===============================================================
Character Meaning
--------- ---------------------------------------------------------------
'r'       open for reading (default)
'w'       open for writing, truncating the file first
'x'       create a new file and open it for writing
'a'       open for writing, appending to the end of the file if it exists
'b'       binary mode
'+'       open a disk file for updating (reading and writing)
========= ===============================================================
不同mode可以相互灵活组合:r、rb、w、wb等

encoding: 一般使用utf8编码

文件位置

一个文件的位置分为两种:绝对位置 和 相对位置。

绝对位置:从盘符开始输入路径,比如:

fp = open("E:\ai_03\code\ai_03_python\day07\data.txt","w", encoding="utf8")

但是这么输入路径"\和后面的内容"很有可能会变成转义字符的作用,所以我们可以这么写:

fp = open(r"E:\ai_03\code\ai_03_python\day07\data.txt", "w", encoding="utf8")

相对位置:相对位置存在i相对的概念, ./ 表示调取的文件和打开位置在同级文件夹下 , …/ 表示在上级目录下。

f2 = open(r"./day04/homework", "r", encoding="utf8")
表示在同一个文件下打开day04/homework文件

读文件

文件打开成功后,我们可以进行下一步操作:读文件内容

如果文件成功打开,调用read方法可以把内容读到内存,用一个str对象接收:f.read()

假设打开了文件:

f2 = open(r"../day04/homework", "r", encoding="utf8")

文件内有以下内容:

使用循环去除列表中的重复值
在jd的字典里提取出 (所有评论 *)中的
评论数据content,店家回复评论 replies中的content
手机颜色 productColor 地址 location
手机名称 referenceName

调用方法

read()方法:

print(f2.read(1))	# read 传参 取几个字符
print(f2.read())	# read 不传参 取所有数据
----------------------
输出结果:
使	#当一个字符被读取后,相当于在文件中拿走了
---
用循环去除列表中的重复值 #因为“使”被读走了,后面再读取就拿不到了
在jd的字典里提取出 (所有评论 *)中的
评论数据content,店家回复评论 replies中的content
手机颜色 productColor 地址 location
手机名称 referenceName

readline()方法:

print(f2.readline())	#readline 不带参数 读取一行
print(f2.readline(5))	# 带参数 读几个字符
print(f2.readline(100))# 参数如果过大 也不会超过这一行
----------------------------
输出结果:
使用循环去除列表中的重复值
在jd的字
典里提取出 (所有评论 *)中的

readlines()方法:返回的是列表

print(f2.readlines(34))	# 参数没到一行 读一行  参数超过一行读完下一行
print(f2.readlines())	# 读取所有的行 存入列表中
-------------------------
['使用循环去除列表中的重复值\n', '在jd的字典里提取出 (所有评论 *)中的\n']
['评论数据content,店家回复评论 replies中的content\n', '手机颜色 productColor 地址 location\n', '手机名称 referenceName']

写文件

写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件:

f2 = open(r"./wd", "w", encoding="utf8")

调用方法

write()方法:

f2.write("nihao helloworld\n") # write 往里写入字符串
----------
文件内:
nihao helloworld

写完之后运行,进入打开的文件中,会发现内容已经被写入。

writelines()方法:

# writelines可以写入字符串列表 把列表合并成大字符串
f2.writelines(["asdad", "dasdadada", "\n", "eeeeee"])
------------
文件内展示:
asdaddasdadada
eeeeee

关闭文件

完成文件的操作后,关闭文件是一个好习惯,因为它可以释放系统资源,并确保所有的数据都被正确地写入文件。

close()方法

比如,上方打开的文件f2,使用close()方法将它关闭:

f2.close()

完成操作后,这样操作就关闭文件了。

with语句

由于文件读写时都有可能产生IOError,一旦出错,后面的f2.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,Python引入了with语句来自动调用close()方法.

# with: open一个文件不需要关闭文件
# 如果能够一次性读写完 用这个比较好
with open(r"./wd", "w", encoding="utf8") as f2:
    f2.write("nihao")

这样操作,读写完之后,文件会自己关闭。

总结

本篇介绍了:

  1. 打开文件:使用open()方法
  2. 读文件:
    1. read()方法:read 传参取几个字符,read 不传参 取所有数据
    2. readline()方法:不带参数 读取一行 ,带参数 读几个字符
    3. readlines()方法:返回的是列表,带参数没到一行 读一行 ,参数超过一行读完下一行。没带参数,读取所有的行
  3. 写文件:
    1. write()方法:往里写入字符串
    2. writelines()方法:writelines可以写入字符串列表 把列表合并成大字符串
  4. 关闭文件:
    1. close()方法:操作步骤完成后编写,关闭文件
    2. with语句:保证无论是否出错都能正确地关闭文件
  • 22
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值