文件操作步骤
'''
1、打开文件,得到文件句柄并赋值给1个变量
2、通过文件句柄对文件进行操作
3、关闭文件
'''
open函数的参数
'r' 读
'w' 写 每次重新生成一个新文件,若存在重名文件,覆盖
'a' 追加,在原有文件末尾追加内容
'b' 二进制(可添加到其它模式中使用,如‘rb’)
'+' 读/写(可添加到其它模式中使用,如‘r+’)
模式:r+,w+,rb,wb,ab,rb+,wb+,ab+。rb和ab可以快速的进行文件传输
f = open('test.txt')#默认’r‘模式,只读。赋值给f的是内存对象(句柄、文件名、大小、内存中的起始位置),不是文件本身
data1=f.read()
data2=f.read()
print data1
print data2#只打印了data1,因为文件里有个指针,读到最后一行,再读一次,就从最后一行开始读,想从头开始,需要把指针挪到开头
f.close()
f.seek(0)#将光标挪到开头
f.tell()#返回光标位置
f.seekable()#判断光标是否可移动
f.read()#一次读取文件所有内容,按字符读取,可设定读取多少,一个中文或一个字母都是一个字符
f.readline()#一次读取一行内容存到内存中,当读取下一行内容时,上一行在内存中删除,适合大文件读取
f.readlines()#一次读取文件所有内容存储到内存中,生成一个列表[],每行是一个元素,适合小文件读取
#写操作不能在文件被关闭的情况下写入
f.write()#将字符串写入文件,在行未添加
f.writelines()#将列表写入文件,写在一行,在行尾添加
f.name()#返回文件名
f.encoding()#返回文件编码
f.fileno()#返回文件句柄在内存中的位置
f.flush()#刷新缓存到内存,强制存储到硬盘
f.trunrcate()#不指定位置就是清空,指定就是清空位置后的内容,跟光标无关,都是从头开始
with open('test.txt','r') as f:
for i in f:
print i
相当于
f = open('test.txt','r')
for i in f:
print i
f.close()
for line in f.readlines():
print line
#输出一行内容输出一行空格。。。。。,因为文件中内行内容后面都有换行符,如果不想输出空行,就需要使用下面的语句:print (line.strip())
f = open('test.txt','w',encoding='utf8')
#由于python3默认使用unicode编码,所以在写入文件时需要调用utf8,pycharm(默认编码方式utf8)才能读取正确,当读取文件时,文件时utf8,pycharm也是utf8,就不需要调用了
修改文件内容
思路:由于数据存储的关系,我们只能把文件1中的内容读取出来,修改后,存储到文件2中
f2 = open('file2','w',encoding='utf8')
f1 = open('file1','r')
num = 0
for line in f1:
num +=1
if num = 5:
line = ''.join([line.strip(),'小鱼儿'])
f2.write(line)
f1 .close()
f2.close()