文件的读写:
文件打开:
f = file(name, mode, [buffering])
入口参数:
- name 文件名,
- mode 选项,字符串,
- buffering 是否缓冲 (0=不缓冲,1=缓冲, >1的int数=缓冲区大小)
返回值 :
- 文件对象
mode 选项:
- "r" 以读方式打开,只能读文件 , 如果文件不存在,会发生异常
- "w" 以写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件
- "rb" 以二进制读方式打开,只能读文件 , 如果文件不存在,会发生异常
- "wb" 以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件
- "rt" 以文本读方式打开,只能读文件 , 如果文件不存在,会发生异常
- "wt" 以文本写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件
- "rb+" 以二进制读方式打开,可以读、写文件 , 如果文件不存在,会发生异常
- "wb+" 以二进制写方式打开,可以读、写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件
文件操作的常用方法:
- f = open('file.txt','r+',encoding='utf-8') #encoding参数可以指定文件的编码
- f.readline() # 读一行,返回数据的类型为‘字符串’
- f.readable() # 判断文件是否可读
- f.writable() # 判断文件是否可写
- f.encoding # 返回文件的编码
- f.read() # 读取所有内容,返回数据的类型为‘字符串’。大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
- f.readlines() #读取所有文件内容,返回数据的类型是’列表’,元素是每行的数据,大文件时不要用。因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
- f.tell() # 获取当前文件的指针指向
- f.seek(0) # 把当前文件指针指向哪
- f.write('爱情证书') # 写一个字符串到文件
- f.writelines([‘123’,’456’,’789’]) # 写一个列表到文件
- f.fulsh() #写入文件后,立即从内存中把数据写到磁盘中
- f.truncate() #清空文件内容
- f.close() # 关闭文件
高效读取文件的方法,是利用循环遍历读取文件的行:
f = open('file.txt')
for line in f:
print line # line是每行文件的内容,读完一行,就会释放一行的内存
使用with结构:
文件操作结束后需要关闭文件释放系统资源,但关闭文件常常会被忘记,使用with方法后文件会被自动关闭。
#打开一个文件,把这个文件的句柄付给f
with open('file.txt','r') as f:
for line in f:
print line