一、简介
什么是文件?
内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U盘等设备。为了便于数据的管理和检阅,引入了“文件”的概念。
一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。一般来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别。
文件操作步骤:
打开文件(open)------>读写文件(read)------>关闭文件(close)。
二、读写文件
2.1、打开文件
在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。
语法:open(name,mode,encoding);
1、name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
2、mode:设置打开文件的模式(访问模式):只读(r)、写入(w)、追加(a)等。
3、encoding:编码格式(推荐使用UTF-8)。
注意:#encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定。UTF-8是目前全球通用的编码格式。
实例:
#打开文件
file_01=open("C:\\Users\\yyalin\\Desktop\\test01.txt",
"r",
encoding="UTF-8")
注意事项:
此时的file_01是open函数的文件对象,对象是Python中一种特殊的数据类型,拥有属性和方法,可以使用对象.属性或对象.方法对其进行访问。
2.2、读取文件
2.2.1、使用read方式
语法:文件对象.read(num)
num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
参考案例:
#打开文件
file_01=open("C:\\Users\\yyalin\\Desktop\\test01.txt","r",encoding="UTF-8")
#1、read()方式
#读取全部内容
file_content=file_01.read();
# 指定长度的内容
# file_content=file_01.read(10);
print(f"read读取的文件内容是:{file_content}")
2.2.2、使用readlines或readline方式
语法:文件对象.readlines() 或 文件对象.readline()
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表(包含所有行内容的列表),其中每一行的数据为一个元素。而readline是读取一行。
参考案例:
#2、readlines方式 读取文件的全部行数据
file_01=open("C:\\Users\\yyalin\\Desktop\\test01.txt","r",encoding="UTF-8")
lines=file_01.readlines();
#readlines方式读取的lines类型是:<class 'list'>
print(f"readlines方式读取的lines类型是:{type(lines)},文件内容是:{lines}")
#使用for循环读取
for line in lines:
print(f"读取的文件内容:{line}")
#关闭读取文件
file_01.close()
#3、使用readline读取每一行内容
line=file_01.readline();
##读取的文件内容:13、相关的技术
2.2.3、使用for循环方式
语法:for line in file_01:
#每一个line临时变量,就记录了文件的一行数据。
参考案例:
#4、使用for循环读取文件行
file_01=open("C:\\Users\\yyalin\\Desktop\\test01.txt","r",encoding="UTF-8")
for line in file_01:
print(f"for方式读取的line类型是:{type(line)},文件内容是:{line}")
# #关闭读取文件
file_01.close()
2.2.4、使用with open的方式
语法:with open("python.txt","r") as file:
file.readlines()
#通过在with open的语句块中对文件进行操作;
#可以在操作完成后自动关闭close文件,避免遗忘掉close方法。
参考案例:
#5、使用with open的方式读取文件
with open("C:\\Users\\yyalin\\Desktop\\test01.txt","r",encoding="UTF-8") as file:
print(f"with open方式读取的line类型是:{type(file)},文件内容是:{file}")
for line in file:
print(f"for方式读取的line类型是:{type(line)},文件内容是:{line}")
2.3、关闭文件
语法:file.close();
#最后通过close,关闭文件对象,也就是关闭对文件的占用;
#如果不调用close,同时程序没有停止运行,那么这个文件将一直被Python程序占用。
#使用with open的方式可以自动关闭文件,不需要处理。
三、写入文件
注意:
1、直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区;
2、当调用flush/close的时候,内容会真正写入文件;
3、这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)。
#####写入文件
##方法:通过write的方式 将w改成a即为追加模式
#打开文件
file_02=open("D:\\test01.txt","w",encoding="UTF-8")
#写入内容 \n代表换行
file_02.write("hello word!!!\nhello python!!")
#刷新内容
# file_02.flush()
#关闭文件 自带flush
file_02.close()
w模式:文件存在会先清空里面的内容,然后添加;
a模式:文件存在会追加的方式添加新内容。
四、小练习
####小练习######
#1、打开文件
file_01=open("C:\\Users\\yyalin\\Desktop\\test01.txt","r",encoding="UTF-8")
#2、读取文件
num=0
#1、通过split切分的方式
# for line in file_01:
# print(f"for方式读取的line类型是:{type(line)},文件内容是:{line}")
# content=line.strip(); #去除前后空格和换行符
# for str_01 in content.split(" "):
# print(f"str_01的内容是:{str_01}")
# if str_01 == "itheima":
# num+=1
# print(f"itheima在文件中一共出现:{num}次数")
#2、通过count统计的方式
for line in file_01:
print(f"for方式读取的line类型是:{type(line)},文件内容是:{line}")
num=num+line.count("spark")
print(f"itheima在文件中一共出现:{num}次数")
#3、关闭读取文件
file_01.close()
更多优秀文章,请扫码关注个人微信公众号或搜索“程序猿小杨”添加。