Python玩转TXT文件:从读写到高效智能修改,告别手动时代!186

哈喽,各位小伙伴!欢迎来到我的知识小站!我是你们的中文知识博主,今天咱们要聊一个既实用又有点“魔法”的话题——如何用Python这把瑞士军刀,轻松玩转咱们最常见的TXT文本文件!

你是不是也遇到过这样的情况:手头有几十个甚至上百个TXT文件,需要批量修改其中的某个词语,或者在每行前面加个序号,或者删掉某些包含特定内容的行?如果让你手动一个一个地去改,估计你的内心OS是崩溃的吧?别急,Python就是来解救你的“加班狗”命运的!它能让你告别繁琐的手动操作,一键搞定文本处理,是不是超酷的?

今天,我将带你一步步探索Python如何高效地读取、写入和修改TXT文件。无论你是编程新手,还是想提升效率的老司机,这篇文章都将是你的“秘密武器”!

第一章:基础篇——文件读写(一切的开始)

要修改一个TXT文件,首先我们得学会怎么“看”它,怎么“写”它。这就像你拿到一本书,得先会翻开看内容,然后才能在上面做笔记或批注。

1. 打开文件:模式知多少?


在Python中,我们使用内置的`open()`函数来打开一个文件。它最常用的两个参数是:文件路径和打开模式。
`'r'` (read):只读模式。这是默认模式,如果你不指定,就是它。文件指针在文件开头。
`'w'` (write):只写模式。如果文件存在,会清空文件内容;如果文件不存在,则创建新文件。文件指针在文件开头。
`'a'` (append):追加模式。如果文件存在,会在文件末尾追加内容;如果文件不存在,则创建新文件。文件指针在文件末尾。
`'r+'` (read and write):读写模式。文件指针在文件开头,既可以读也可以写。
`'w+'` (write and read):写读模式。会清空文件内容或创建新文件。文件指针在文件开头,既可以写也可以读。
`'a+'` (append and read):追加读写模式。文件指针在文件末尾,既可以追加也可以读。

划重点:编码!在处理中文TXT文件时,指定`encoding='utf-8'`几乎是万能解药,可以避免乱码问题。# 打开一个文件进行读取
try:
with open('', 'r', encoding='utf-8') as f:
content = ()
print("文件内容:", content)
except FileNotFoundError:
print("文件未找到,先创建一个吧!")
# 如果文件不存在,我们先创建一个示例文件
with open('', 'w', encoding='utf-8') as f:
("你好,世界!")
("Python文本处理真有趣。")
("这是第三行内容。")
("第四行,有一些需要被替换的词:旧词语。")
("第五行,我想在它前面插入新内容。")
("第六行,可能包含需要删除的关键词:垃圾信息。")
print("示例文件 '' 创建成功!")

2. 读取文件:看清它的真面目


打开文件后,有几种方法可以读取它的内容:
`()`:读取整个文件的所有内容,作为一个字符串返回。
`()`:读取文件的一行内容,包括换行符``,作为字符串返回。
`()`:读取文件所有行,返回一个包含所有行的字符串列表。

最常用且推荐的方式是使用`for`循环逐行读取,尤其是在处理大文件时,可以避免一次性将所有内容加载到内存中,节省资源。with open('', 'r', encoding='utf-8') as f:
print("--- 逐行读取文件内容 ---")
for line_num, line in enumerate(f, 1):
print(f"第 {line_num} 行: {()}") # strip()用于去除行末的换行符

3. 写入文件:留下你的印记


写入文件通常使用`()`方法。注意,每次写入都需要手动添加换行符``,否则所有内容会挤在一行。# 使用追加模式 'a' 在文件末尾添加内容
with open('', 'a', encoding='utf-8') as f:
("这是使用追加模式新加的一行。")
print("追加内容成功!")
# 再次读取验证
with open('', 'r', encoding='utf-8') as f:
print("--- 追加后文件内容 ---")
print(())

4. 关闭文件:好习惯必须有!


文件操作完成后,务必关闭文件,释放系统资源。最安全、最推荐的做法是使用`with open(...) as f:`语句。它能自动帮你处理文件的打开和关闭,即使在操作过程中发生错误,也能确保文件被正确关闭。# 再次强调 with 语句的重要性,它会自动关闭文件
with open('', 'r', encoding='utf-8') as f:
content = ()
print("通过 'with' 语句安全读取了文件。")
# 文件在 'with' 语句块结束后自动关闭,无需手动 ()

第二章:进阶篇——动手修改TXT(真刀真枪干活了!)

TXT文件不像Word文档那样可以直接在中间插入或删除。所以,我们修改TXT文件的核心思路是:
读取:将文件的所有内容(或按需部分内容)一次性读入到内存中(通常是一个字符串或一个列表)。
修改:在内存中对这些数据进行各种操作(替换、插入、删除等)。
写入:将修改后的数据重新写回文件。这通常意味着用新内容覆盖旧文件,或者写入到一个新的临时文件,再替换旧文件。

场景1:替换特定内容


这是最常见的修改需求之一。比如,把文档中所有的“旧词语”都换成“新词语”。# 定义要替换的词
old_word = "旧词语"
new_word = "Python3"
# 1. 读取所有行到内存
with open('', 'r', encoding='utf-8') as f:
lines = () # 得到一个包含所有行的列表
# 2. 在内存中进行修改
modified_lines = []
for line in lines:
((old_word, new_word))
# 3. 将修改后的内容写回文件(覆盖原文件)
with open('', 'w', encoding='utf-8') as f:
(modified_lines) # writelines接受一个字符串列表
print(f"成功将 '{old_word}' 替换为 '{new_word}'!")
# 验证结果
with open('', 'r', encoding='utf-8') as f:
print("--- 替换后文件内容 ---")
print(())

场景2:插入新内容


你可能想在文件的特定行前或行后插入新的内容,或者在满足某个条件时插入。insert_line_content = "这是我新插入的一行内容!"
target_keyword = "第五行"
with open('', 'r', encoding='utf-8') as f:
lines = ()
new_lines = []
inserted = False
for line in lines:
if target_keyword in line and not inserted:
# 在包含 '第五行' 的内容前面插入新行
(insert_line_content)
inserted = True # 确保只插入一次
(line)
# 如果想在文件末尾插入,且之前没有插入过,可以追加
if not inserted:
(insert_line_content)

with open('', 'w', encoding='utf-8') as f:
(new_lines)
print(f"成功在包含 '{target_keyword}' 的行前插入了新内容!")
# 验证结果
with open('', 'r', encoding='utf-8') as f:
print("--- 插入后文件内容 ---")
print(())

场景3:删除特定行


删除包含特定关键词的行,或者删除空行等。keyword_to_delete = "垃圾信息"
with open('', 'r', encoding='utf-8') as f:
lines = ()
# 筛选出不包含特定关键词的行
filtered_lines = [line for line in lines if keyword_to_delete not in line]
with open('', 'w', encoding='utf-8') as f:
(filtered_lines)
print(f"成功删除包含关键词 '{keyword_to_delete}' 的行!")
# 验证结果
with open('', 'r', encoding='utf-8') as f:
print("--- 删除后文件内容 ---")
print(())

场景4:在文件开头或结尾追加内容


在文件结尾追加内容我们已经用`'a'`模式演示过了,这里说一下如何在文件开头添加内容。header_content = "--- 这是文件开头新添加的标题 ---"
with open('', 'r', encoding='utf-8') as f:
original_content = () # 读取所有内容
# 将新内容和原内容拼接
new_content = header_content + original_content
with open('', 'w', encoding='utf-8') as f:
(new_content)
print("成功在文件开头添加了新内容!")
# 验证结果
with open('', 'r', encoding='utf-8') as f:
print("--- 开头追加后文件内容 ---")
print(())

第三章:最佳实践与小贴士

掌握了基本操作,再来看看如何让你的代码更健壮、更高效:
备份!备份!备份!:在对文件进行覆盖写入操作之前,强烈建议你先备份原始文件!尤其是在自动化脚本中,一个小小的错误可能导致数据丢失。你可以将修改后的内容写入到一个临时文件,然后用临时文件替换原文件,或者直接复制一份原文件作为备份。
处理大文件:如果文件非常大(比如几个GB),一次性`read()`或`readlines()`到内存可能会导致内存溢出。这时,你应该考虑逐行读取和处理,或者使用`fileinput`这样的模块,它可以实现原地修改文件(in-place modification),而无需将整个文件加载到内存。
错误处理:使用`try...except`块来捕获可能发生的`FileNotFoundError`、`IOError`等异常,让你的程序更加健壮。
编码问题:再次强调,始终明确指定文件的编码,尤其是`utf-8`,可以避免很多意想不到的乱码问题。
注释清晰:为你的代码添加清晰的注释,方便日后理解和维护。

import os
# 备份文件示例
original_file = ''
backup_file = ''
if (original_file):
import shutil
(original_file, backup_file)
print(f"已创建备份文件:{backup_file}")
try:
with open(original_file, 'r', encoding='utf-8') as f_read:
lines = ()

# 进行一些修改操作,例如:删除所有空行
modified_lines = [line for line in lines if ()]
with open(original_file, 'w', encoding='utf-8') as f_write:
(modified_lines)

print(f"文件 '{original_file}' 修改成功,已删除所有空行。")
except FileNotFoundError:
print(f"错误:文件 '{original_file}' 未找到。")
except Exception as e:
print(f"发生其他错误:{e}")
# 验证结果
with open(original_file, 'r', encoding='utf-8') as f:
print("--- 最终修改后的文件内容 ---")
print(())


看到了吗?通过Python,我们完全可以摆脱手动修改TXT文件的痛苦,实现各种复杂的文本处理任务。从简单的替换、插入、删除,到批量处理,Python都能让你轻松应对,大大提升工作效率!

这只是Python文本处理的冰山一角,当你熟练掌握这些基础后,还可以探索更强大的`re`(正则表达式)模块,用于更复杂的模式匹配和替换;或者`pathlib`模块,让文件路径操作更优雅。编程的世界充满乐趣,动手实践是最好的学习方式!

希望这篇文章能帮助你告别手动时代,开启Python自动化文本处理的新篇章!如果你有任何疑问或想分享你的使用经验,欢迎在评论区留言哦!下次见!

2025-10-31


上一篇:赋能泸州:掌握Python图形编程,开启数字创意与职业新篇章

下一篇:Python单位转换:深入理解海里与公里换算及代码实践