当在Python中向文件中写入数据时,可以使用以下模式:1.写入模式('w'):此模式用于创建一个新文件并将数据写入其中。如果文件已经存在,它将被覆盖。
2.追加模式('a'):此模式用于在文件的末尾添加数据而不覆盖现有数据。
3.读取模式('r'):此模式用于读取文件中的数据。
4.读取和写入模式('r+'):此模式用于读取和写入文件中的数据。
5.二进制模式('b'):此模式用于以二进制格式写入文件。
6.二进制和文本模式('rb'):此模式用于以二进制格式读取和写入文件。
使用不同的模式可以改变文件的打开方式,并影响在文件中写入或读取数据的方式。因此,在使用Python中的文件操作时,选择正确的模式非常重要。
1文件读取全文本操作
在一定场景下我们需要把文本全部内容读取出来,进行处理。python提供三种函数读取文件,分别是readreadlinereadlines,
read():读取文件的全部内容,加上参数可以指定读取的字符。
readline():读取文件的一行。
readlines():读取文件的所有行到内存中。
不同场景下我们可以选择不同函数对文件进行读取。
1.1方法一
file_name=input("请输入你要打开的文件的完整路径及名称")
file=open(file_name,"r")
txt=file.read()
#全文本的处理
file.close()
使用read函数将文件中的内容全部读取,放在字符串变量txt中。这样操作适合于文本较小,处理简单的情况,当文件较大时,这种方式处理时不合适的。一次性读取较大的文件到内存中,会耗费较多的时间和资源。这时候分批处理效果更好。
1.2方法二
file_name=input("请输入你要打开的文件的完整路径及名称")
file=open(file_name,"r")
txt=file.read(4)
#文本的处理whiletxt!=""txt=file.read(4)
#批量文本处理
file.close()
这种方法适合于分批处理文本信息,每次批量读入,批量处理,不会对内存造成较大的压力。
1.3方法三
file_name=input("请输入你要打开的文件的完整路径及名称")
file=open(file_name,"r")forlineinfile.readlines():
#处理每一行数据
file.close()
这种处理方式适合处理以行为分割特点的文本,并且文本较小,因为这种处理方式需要一次性把文件所有内容读取到内存中。
1.4方法四
file_name=input("请输入你要打开的文件的完整路径及名称")
file=open(file_name,"r")#这里的file时文件句柄forlineinfile:
#处理每一行数据
file.close()
这种方式和方法三中的区别是分行读入,逐行处理,不会一次性把文件所有内容都读入到内存中,对一些大文件的处理是很有效的。
2文件写入文本操作
文件写入有两种写入函数和一种辅助支持。
write():向文件中写入一个字符或者字节流
writelines():将一个元素全为字符串的列表写入到文件中需要注意的是,writelines写入列表元素的时候会把列表元素的内容拼接到一起写入,不会有换行和空格。
seek():辅助写入函数offset偏移量参数代表含义如下
0-文件开头
1-当前位置
2-文件结尾
2.1方法一
file_name=input("output.txt","w+")
text="helloworld!"file_name.write(text)
file.close()
2.2方法二
file_name=input("output.txt","w+")
list=["中午","早上","晚上"]
file_name.writelines(list)forlineinfile:
#读取写入的数据,这时候发现是没有任何内容的
file.close()
我们增加一行代码就可以读取到写入的文件内容,利用seek()函数调整写操作指针的位置,可以实现写操作之后的正常读取。
file_name=input("output.txt","w+")
list=["中午","早上","晚上"]
file_name.readlines(list)
file_name.seek(0)#调整写的指针到文件的开始位置forlineinfile:
#读取写入的数据,这时候会读出一行写入的数据。