
本教程详细介绍了如何使用python向文本文件追加数据时,自动为每行添加一个格式化的递增序列号。通过巧妙利用文件读写模式和文件指针定位,我们能够准确获取现有行数,并生成如"001"、"002"等格式的序列号,确保每次写入的数据都带有正确的行号。
在许多数据记录场景中,我们可能需要向文本文件追加新数据,并希望每条记录都带有一个自动递增的序列号,例如 001, 002, 003 等。这不仅有助于数据的组织和检索,也能直观地反映记录的顺序。本文将详细介绍如何使用 Python 实现这一功能。
实现此功能的关键在于以下几个步骤:
我们将通过一个具体的例子来演示如何向一个名为 stadio_2023_2024.txt 的文件追加比赛记录,并为每条记录添加序列号。
为了实现读写兼顾,我们需要使用 a+ 模式打开文件。
立即学习“Python免费学习笔记(深入)”;
FILENAME = "/storage/emulated/0/Python/stadio_2023_2024.txt"
with open(FILENAME, "a+") as data:
# ... 后续操作使用 with open(...) 语句是 Python 中处理文件 I/O 的最佳实践,它能确保文件在使用完毕后被正确关闭,即使发生错误也不例外。
由于 a+ 模式打开文件时指针在文件末尾,我们需要首先使用 data.seek(0) 将文件指针移到文件开头,然后才能读取文件内容。
本文档主要讲述的是Android传感器编程;传感器是一种物理装置或生物器官,能够探测、感受外界的信号、物理条件(如光、热、湿度)或化学组成(如烟雾),并将探知的信息传递给其它装置或器官。同时也可以说传感器是一种检测装置,能感受被测量的信息,并能将检测的感受到的信息,按一定规律变换成为电信号或其它所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。它是实现自动检测和自动控制的首要环节。感兴趣的朋友可以过来看看
0
data.seek(0) # 将文件指针移到文件开头
seqno = len(data.readlines()) + 1 # 读取所有行并计算下一行序列号data.readlines() 会读取文件中的所有行,并返回一个字符串列表,每个元素代表文件中的一行。len() 函数计算列表的长度,即文件的总行数。我们将这个总行数加 1,就得到了下一行的序列号。
获取当前日期并格式化,以及从用户获取其他信息。
from datetime import datetime
current_date = datetime.today().strftime("%d/%m/%Y") # 获取当前日期并格式化
avversaria = input("请输入对手名称 (Avversaria): ")
competizione = input("请输入比赛类型 (SA, CI, CU 或 Am): ")
dove = input("请输入比赛地点 (C:主场, T:客场 或 N:中立): ")这里使用了 datetime.today().strftime("%d/%m/%Y") 来获取当前日期并将其格式化为 DD/MM/YYYY 的形式。input() 函数用于获取用户的输入。
最后一步是将所有收集到的信息拼接成一个完整的字符串,并写入文件。这里使用 f-string 来方便地进行字符串格式化。
output_line = f"{seqno:03d} {current_date} {avversaria} {competizione} {dove}"
print(output_line, file=data)结合上述步骤,完整的 Python 脚本如下:
from datetime import datetime
import os
# 定义文件路径
# 请根据您的操作系统和需求调整文件路径
# 例如:Windows: "C:\Users\YourUser\Documents\stadio_2023_2024.txt"
# Linux/macOS: "/home/YourUser/stadio_2023_2024.txt" 或 "./stadio_2023_2024.txt"
FILENAME = "/storage/emulated/0/Python/stadio_2023_2024.txt"
def append_with_sequence_number():
"""
向指定文件追加数据,并自动添加递增的序列号。
"""
try:
with open(FILENAME, "a+", encoding="utf-8") as data:
# 1. 将文件指针移到文件开头,以便读取现有内容
data.seek(0)
# 2. 读取所有行,计算下一行的序列号
# 注意:readlines() 会将所有内容加载到内存,对于超大文件可能效率不高
# 但对于一般日志或记录文件,通常是可接受的
seqno = len(data.readlines()) + 1
# 3. 获取当前日期和用户输入
current_date = datetime.today().strftime("%d/%m/%Y")
avversaria = input("请输入对手名称 (Avversaria): ")
competizione = input("请输入比赛类型 (SA, CI, CU 或 Am): ")
dove = input("请输入比赛地点 (C:主场, T:客场 或 N:中立): ")
# 4. 格式化输出字符串
# {seqno:03d} 将序列号格式化为三位,不足补零
output_line = f"{seqno:03d} {current_date} {avversaria} {competizione} {dove}"
# 5. 将格式化后的字符串写入文件
# print函数的file参数会将内容写入指定文件,并自动添加换行符
print(output_line, file=data)
print(f"
新记录已成功添加到文件: {FILENAME}")
# 可选:再次读取并打印文件内容以验证
print("
文件当前内容:")
with open(FILENAME, "r", encoding="utf-8") as data:
print(data.read())
except IOError as e:
print(f"文件操作失败: {e}")
except Exception as e:
print(f"发生未知错误: {e}")
if __name__ == "__main__":
append_with_sequence_number()通过本教程,我们学习了如何利用 Python 的文件操作功能,结合 a+ 文件模式、文件指针定位以及 f-string 格式化,为文本文件的新增行自动添加递增的序列号。这种方法简洁高效,适用于大多数需要自动编号数据记录的场景。理解其背后的原理和注意事项,将有助于您在实际开发中更灵活地运用文件操作。
以上就是Python实现文本文件行号自动递增写入教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号