python学习笔记-day5-文件修改

今天说说如何使用python进行文件修改的操作,之前已经说过如何读写文件以及各种读写的方式,请查看http://www.cnblogs.com/shmily2018/p/8807123.html。

 

一、修改文件的方式

1、在原来内容里基础上进行修改

#方法1、简单粗暴直接
#2、打开一个文件,获取到他的所有内容
#3、对内容进行修改
#4、把新的内容写进去

f = open('username', 'a+')
f.seek(0)
all_str = f.read()
new_str = all_str.replace('123456','78910') #replace,如果字符串里没有想替换的子串,是不会替换的,也不会报错
f.seek(0)
f.truncate() #清空文件内容,如果不用seek的情况下,文件指针已经在最后了

f.write(new_str)
f.close()

示例:
f = open('username', 'a+')
f.seek(0)
all_str = ''
for line in f: #这样也可以,不需要用f.readlines()
new_str = 'syz_' + line
all_str += new_str

f.seek(0)
f.truncate()
f.write(all_str)
f.close()

注意点:
#区别
#for line in f:  #是按行读,读的时候才去执行
#for line in f.readlines()  #是一次性将所有内容读到一个list里,文件大的时候效率不好或者有问题


2、修改文件第2种方式,用两个文件

#打开2个文件
#先打开a文件,修改a文件
#写一行到b文件
#a.txt a.txt.bak
#删除a.txt文件,把a.txt.bak改名

#把花替换为flower

import os
#先替换,后改名
with open('words', encoding='utf-8') as fr, open('.words.bak', 'w', encoding='utf-8') as fw:
for line in fr:
new_line = line.replace('花','flower')
fw.write(new_line)

os.remove('words') #删除文件
os.rename('.words.bak', 'words') #改名


注意点:
#write与writelines区别
fw = open('test', 'w')
#fw.write(string) #只能写字符串
a = ['123456','llllll']
for i in a:
fw.write(i)

fw.writelines() #writelines()会帮助咱们循环一次,如果是列表的时候不用自己循环
 
posted @ 2018-04-20 16:56  懒懒的妞  阅读(165)  评论(0编辑  收藏  举报