Python-读写文件

一、文件有三种打开方式,分别为读、写、追加。默认读方式打开

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')  #将新文件重命名为原始文件

 

posted on 2017-10-16 21:57  乔~惜  阅读(18242)  评论(0编辑  收藏  举报