标签:aaa 磁盘 缓存 代码 文件 读取 bbb readline 修改内容
一、文件有三种打开方式,分别为读、写、追加。默认读方式打开
1、以读方式打开,文件不存在时,会报错
2、以写方式打开,文件不存在时,会创建一个文件;文件存在时,会清空文件原有内容
3、以追加方式打开,可读写文件,但是游标当前位置为文件末尾
二、实现代码
1、以“读”方式打开文件
f = open(‘users.txt‘,‘r‘,encoding=‘utf-8‘) #如果文件不是uft-8编码方式,读取文件可能报错
print(f.read()) #返回一个字符串,读取文件所有内容
print(f.readlines()) #返回list,文件的每一行作为list的一个字符串元素
print(f.readline()) #读取一行
2、以“写”方式打开文件
f = open(‘users.txt‘, ‘w‘) #清空文件内容再写
f.write(‘aaa‘) #只能写字符串
f.write(‘\n‘)
f.writelines([‘123‘,‘\n‘, ‘bbb‘,‘\n‘]) #可写所有能迭代的类型,例如list
f.writelines((‘456‘,‘\n‘, ‘ccc‘)) #例如tuple
f.close()
3、以“追加”方式打开文件
f = open(‘users.txt‘,‘a+‘) #可读写文件,文件不存在就创建一个文件
f.seek(0) #要先把游标放到文件开始处,否则f.read()为空
print(f.read()) #读取整个文件内容
print(‘这里是分割线‘.center(100, ‘-‘))
f.seek(0)
for line in f: #高效率的读取方式,每次只读一行
print(line)
f.close()
4、以 ‘r+‘ 或 ‘w+’ 方式打开文件
f = open(‘users.txt‘,‘r+‘) #读写模式 r+,不会清空文件,但是写入的内容会替换原有的内容,从文件起始位置进行替换
f = open(‘users.txt‘,‘w+‘) #写读模式 w+,请求文件,光标在写入文件的末尾
三、修改文件
1、第一种方式:读取原有文件,修改内容,删除原有数据,写入修改后的内容
有时候发现write()之后,数据并没有写入文件,有可能是写入数据量太小,缓存区还未满,没有写入到磁盘。因此,加上函数f.flush(),强制将缓存区的数据写入磁盘中
f = open(‘users.txt‘,‘a+‘)
f.seek(0) #将游标指到起始位置
old = f.read()
new = old[:4] + ‘12‘
f.seek(0) #读取文件后,将游标重新指向起始位置
f.truncate() #清空游标之后的所有内容
f.write(new) #写入新数据
f.flush() #将缓存区的数据写入硬盘
f.close()
2、第二种方式:创建一个新文件,保存修改后的内容,再重命名
import os
with open(‘users.txt‘, ‘r‘) as f, open(‘users_new.txt‘, ‘w‘) as f1: #打开源文件并创建一个新文件
old = f.read() #读取源文件
new = old.replace(‘ef‘, ‘12‘) #修改文件内容
f1.write(new) #将修改后的内容写入新文件
os.remove(‘users.txt‘) #删除原始文件
os.rename(‘users_new.txt‘, ‘users.txt‘) #将新文件重命名为原始文件
标签:aaa 磁盘 缓存 代码 文件 读取 bbb readline 修改内容
原文地址:http://www.cnblogs.com/jessicaxu/p/7679104.html