当我们在使用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提供的优越性能和高效性进行文件操作。


(责任编辑:xbage.com)