file
file related function
open,close,read,write
1. open 函数
file_obj = open(file_name , access_mode, buffering)
- file_name, 一般用绝对路径
- access_mode,读写模式
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 - buffering
0,就不会有寄存;
1,访问文件时会寄存行;
大于1的整数,表明了这就是的寄存区的缓冲大小;
负值,寄存区的缓冲大小则为系统默认
access_mode
一般用的是r+/w+
r+打开一个文件用于读写。文件指针将会放在文件的开头。
读写,文件不存在不会新建文件,抛出异常;
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
读写,文件不存在会新建文件;
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
读写,追加append模式
2. read 读函数/seek 读指针函数
- read(),当前位置-最后位置 读取,str
- readline(), 读取当前行,str
- readlines(),读取当前位置-最后位置,list
- for line in fileobj: 循环读取当前行,str
- seek()文件指针移动函数,返回None type
- tell()返回文件指针当前位置,返回一个长整型long
read 读函数
# encoding: UTF-8# Author:SXQ# E-mail: lvhuijia@gmail.com# 2.txt格式'''0 80D3 5 19881 80D4 5 11112 8060 4 1223 80BA 6 12234 8067 4 13451'''file_name = r'C:\Users\xshi\Desktop\2.txt'obj = open(file_name, 'r+')# 打开文件时,指针指在文件的开头;# 当有读取操作的时候,指针往下移;# 当指针移到最后时,无法进行读操作,读操作不会失败,返回空;print objprint type(obj)obj.close()# EXP:#一次读取全部的文件内容#当前指针位置到文件最后#存储为strprint 'read()'obj = open(file_name, 'r+')str = obj.read()print strprint type(str)obj.close()#读取一行#存储为strprint 'readline()'obj = open(file_name, 'r+')str = obj.readline()print strprint type(str)obj.close()#一次性读取所有文件内容#存储为listprint 'readlines()'obj = open(file_name, 'r+')str = obj.readlines()# lineList = list(obj)同上一行print strprint type(str)obj.close()#######################################################print '华丽的分割线'print '#############################################'#读取文件10个字节print 'read(10)'obj = open(file_name, 'r+')str = obj.read(10)print strprint type(str)obj.close()#对文件对象进行for循环obj = open(file_name, 'r+')for line in obj:print lineprint type(line)#返回strobj.close()#对文件对象readlines()进行for循环obj = open(file_name, 'r+')for line in obj.readlines():print lineprint type(line)#返回strobj.close()
seek 读指针移动函数
seek(offset,where): where=0从起始位置移动,1从当前位置移动,2从结束位置移动
- f.seek(p,0) 移动当文件第p个字节处,绝对位置
- f.seek(p,1) 移动到相对于当前位置之后的p个字节
- f.seek(p,2) 移动到相对文章尾之前的p个字节
# encoding: UTF-8# Author:SXQ# E-mail: lvhuijia@gmail.com# 2.txt格式'''0 80D3 5 19881 80D4 5 11112 8060 4 1223 80BA 6 12234 8067 4 13451'''file_name = r'C:\Users\xshi\Desktop\2.txt'obj = open(file_name, 'r+')str = obj.read()print strobj.seek(0,0)str1 = obj.read()print str1obj.close()
tell返回当前读指针位置
# encoding: UTF-8# Author:SXQ# E-mail: lvhuijia@gmail.com# 2.txt格式'''0 80D3 5 19881 80D4 5 11112 8060 4 1223 80BA 6 12234 8067 4 13451'''file_name = r'C:\Users\xshi\Desktop\2.txt'obj = open(file_name, 'r+')str = obj.read(10)x = obj.tell()print type(x)print xprint strobj.close()
3. write 函数
- obj.write()
obj.write(str), str必须为一字符串
无返回值 - obj.writelines()
obj.writelines(list1),list1必须为一序列(list,tuple,dict),且序列内元素必须是字符串
无返回值
# encoding: UTF-8# Author:SXQ# E-mail: lvhuijia@gmail.comfile_name_new = r'C:\Users\xshi\Desktop\3.txt'obj = open(file_name_new, 'r+')print '文件名字为:', obj.name# obj.write(str), str必须为一字符串# 无返回值str = '111111111111,2222'print obj.write(str)# obj.writelines(list1),list1必须为一序列,且序列内元素必须是字符串# 无返回值list1 = ['\n''22\n','2','shit','chi']print obj.writelines(list1)obj.close()

浙公网安备 33010602011771号