当我们在使用Python进行文件操作时,有时候需要覆盖之前写入的文字内容,以保持文件内容的最新状态。那么Python写文件时怎么覆盖原来写的呢?
文件操作基础知识
首先,我们要知道Python中文件操作的基础知识。Python中的文件操作需要通过open函数打开相应的文件,再进行读写等操作。具体地,我们可以利用open函数打开文件。
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
其中,file代表文件名,mode代表文件打开方式,常用的为‘r’(只读),‘w’(只写),‘a’(追加)等。默认为‘r’。这里我们主要关注file和mode两个参数。
使用“w”模式覆盖文件内容
到了这里,我们就可以回答问题了:Python写文件时,如需覆盖原来写的,只需要在open函数中将mode参数更改为“w”即可。
with open('file_path', 'w') as f:
f.write('new_content')
这里‘file_path’代表文件路径,‘new_content’代表新增的文字内容。'w'模式会覆盖原来写的文件内容,如果文件不存在,则会创建新文件。
使用“a”模式增加内容
同理,如需增加新的内容,只需要将mode更改为‘a’即可。
with open('file_path', 'a') as f:
f.write('new_content')
此时,文字内容将会以追加的方式添加在文件末尾。
结合实际应用
以上是纯Python文件操作的讲解,实际应用中我们可能会需要加入其他功能,比如自动备份等。下面我们来看一个例子:
import time
def backups(file_path):
#获取文件名
file_name = file_path.split('/')[::-1][0]
#获取当前日期
date = time.strftime('%Y/%m/%d')
#生成备份文件
bfilename = file_name.split('.')[0] + date + '备份' + '.' + file_name.split('.')[1]
#备份文件生成策略:在原文件名后加上 当前日期 和 备份两个字符串
with open(file_path, 'r', encoding='UTF-8') as f1, open(bfilename, 'w', encoding='UTF-8') as f2:
content = f1.read()
content = content.replace('*', '#')
f2.write(content)
finish_time = time.strftime('%Y-%m-%d %H:%M:%S')
backup_info = 'The file %s has been backed up to %s at %s' % (file_name, bfilename, finish_time)
print(backup_info)
backups('test.txt')
在上述代码中,我们首先通过split函数将文件路径转换为文件名,然后利用time模块获取当前日期。接着,我们根据需求进行备份文件的生成,在文件读取出来之后,我们将其中的‘*’替换成‘#’,然后写入备份文件中。最后输出备份信息。
运行结果如下:
The file test.txt has been backed up to test2019/09/24备份.txt at 2019-09-24 15:31:31
结语
Python作为一门优秀的语言,文件操作等基础操作也是有着不错的支持与优化。我们可以根据实际需求,利用Python提供的优越性能和高效性进行文件操作。