python之文件读写操作
1.python中的文件打开模式有哪些
r 以只读模式打开文件,并将打开的文件头;如果文件不存在会报错
w 以只写模式打开文件,并将文件指向文件头;如果文件存在则将其文件内容清空,如果文件不存在则创建
a 以只追加可写模式打开文件,并将文件指针指向文件尾部,如果文件不存在,则创建
r+ 在r的基础上,增加了可写功能
w+ 在w的基础上增加了可读功能
a+ 在a的基础上增加了可读功能
b 在读二进制文件(默认是t,表示文本),需要与上面的几种模式搭配使用,如ab,wb,ab,ab+(posix系统,包括Linux都会忽略该字符)
文件操作步骤示例:(实践才是检验真理的唯一标准)
例子*:
我们来读这样一个文本文件:song.txt,该文件的字符编码为utf-8.
匆匆那年我们 究竟说了几遍 再见之后再拖延
可惜谁有没有 爱过不是一场 七情上面的雄辩
匆匆那年我们 一时匆忙撂下 难以承受的诺言
只有等别人兑现
1.初级简单方法python具体实现:
#第一步:(以只读模式)打开文件
f=open(’song.txt‘,‘r’,encoding=‘utf-8’)
#第二步: 读取文件内容
print(f.read())
#第三步:关闭文件
f.close()
2.中级方法实现:
在实现基本功能的前提下,考录一些可能的意外因素。因为文件读写时都有可能产生IO错误(IOError),一旦出错,后面包括f.close()在内的所有代码就不会执行了,因此我们要保证文件无论如何都能被关闭,那么可以用try…finally来实现,这实际上就是try…except…finally的简化版(我们只用Python3来进行实例演示):
f=’ ’
try:
f=open(‘song.txt’,‘r’,encofing=‘utf-8’)
print(f.read())
num=10/0
finally:
print(’>>>>>>finally’)
if f:
f.close()
输出结果:匆匆那年我们 究竟说了几遍 再见之后再拖延
可惜谁有没有 爱过不是异常 七情上面的雄辩
匆匆那年我们 一时匆忙撂下 难以承受的诺言
只能等别人兑现
3.高级方法实现:
为了避免忘记或者为了避免每次都要手动关闭文件,我们还可以使用with语句(一种语法糖,语法糖语句通常是为了简化某些操作而设计的)。with语句会在其代码快执行完毕之后自动关闭文件。因此我们可以这样来改写上面的程序:
with open(‘song.txt’,‘r’,encoding=‘utf-8’) as f:
print(f.read())
print(f.close)
输出结果:
匆匆那年我i们 究竟说了几遍 再见之后再拖延
可惜谁都没有 爱过不是一场 七情上面的诺言
匆匆那年我们 一时匆忙撂下 难以承受的诺言
只有等别人兑现
true
这种方法不仅简单很多,而且代码的结构也比较清晰了,with之后打印f.closed属性值为true,说明文件确实被关闭了。
python读取文件的相关方法
#1.读取指定长度的内容
with open(‘C:\Users\sunyuhong6\Desktop\song.txt’,‘r’)as f:
print(f.read(12))
#2.读取文件中的一行内容
#with open(‘C:\Users\sunyuhong6\Desktop\song.txt’,‘r’)as f:
#print(f.readline())
#3.遍历打印一个文件中的每一行
#方式一:先一次性读取所有行到内存,然后再遍历打印
with open(‘C:\Users\sunyuhong6\Desktop\song.txt’,‘r’)as f:
for line in f.readlines():
print(line)
#这种方法的缺点与read()方法是一样的,都会消耗大量的内存空间.
#方式二:通过迭代器一行一行的读取并打印
with open(‘C:\Users\sunyuhong6\Desktop\song.txt’,‘r’,newline=’’)as f:
for line in f:
print(line)
#life类中的其他方法:
#flush()刷新缓冲区数据,将缓冲区数据立刻写入文件
#next()返回文件下一行,这个方法也是file对象实例可以被当作迭代器使用的原因
#trucate([size])截取文件中指定字节数的内容,并覆盖保存到文件中,如果不指定size参数则文件将被清空,python2无返回值,python3返回新的文件的,内容字节数
#write(str)将字符串写入文件,并没有返回值
#writelines(sequence)像文件写入一个字符串或一个字符串列表,如果字符串列表中的元素需要换行要自己加入换行符