python文件操作
打开文件,注意文件地址统一使用 \ 而不是 /
a = open(r'D:\PyCharm 2017.3.1\beadtxt.txt','r',-1)
b = open(r'D:\PyCharm 2017.3.1\beadtxt.txt','w',-1)
c = open(r'D:\PyCharm 2017.3.1\beadtxt.txt','a+',-1)
python中使用open方法打开文件,括号中 r 是需要带的,方法编写格式如下:
open(file,mode,buffering,encoding,errors,newline,closefd)
可以只写前几样,但是如果需要写后边的(如encoding)的话前边的也必须都声明。
mode类型:
‘r’ 读模式
‘w’ 写模式
‘a’ 追加模式
‘b’ 二进制模式(可以添加到其他模式后共同作用)
‘+’ 读/写模式(也可以添加到其他模式后)
buffring是INT类型,如果是0,I/O操作无缓冲,直接写到磁盘上;如果是1,I/O操作就是先写到内存里,只有使用flush函数或者close函数才会将数据更新到硬盘上;如果参数大于一,代表缓冲区大小(单位字节),-1(默认值,或者任何负数)代表使用默认缓冲区大小。
文件打开后使用完毕必须使用close()方法关闭,因为文件对象会占用操作系统资源,影响系统的IO操作。
文件读取常用的方式是按字节读取和按行读取,经常用到的方法时read()、readline()、close()。
read()返回的是str类型的对象。
而由于文件操作可能会出现IO异常,一旦出现异常,后面的close()方法就不会调用。所以为了保证程序的健壮性,我们需要使用try … finally 来实现。
try:
a = open(r'D:\PyCharm 2017.3.1\beadtxt.txt','r',-1)
print(a.read())
finally:
if a:
a.close()
当然,为了减少代码长度,python提供了一种简单写法,使用with代替try…finally,如下所示:
with open(r'D:\PyCharm 2017.3.1\beadtxt.txt','r',-1) as fileReador:
print(fileReador.read())
那么readline()又是什么时候用呢?当文件很大的时候,可能会出现内存不足的情况,这个时候我们可以反复调用read(size)方法,size表示字节数,如果文件是文本文件,那么可以使用readline()方法一次读取所有内容并按行返回列表。将上面稍作修改,采用readline()的方法实现如下:
with open(r'D:\PyCharm 2017.3.1\beadtxt.txt','r',-1) as fileReador:
for line in fileReador.readline():
print(line.strip())
以上是打开文件,下面我们介绍写入文件:
首先打开的时候是一样的,不同的是mode不同:
with open(r'D:\PyCharm 2017.3.1\beadtxt.txt','w',-1) as fileReador:
fileReador.write('liuyuexiao')