周报合并器
每周五下午 5:00,你都要面临一项令人头大的行政任务。
问题: 你需要从三个部门收集每周进度汇报:销售部 (sales.txt)、技术部 (tech.txt) 和人事部 (hr.txt)。你得手动打开每个文件,复制文本,然后粘贴到一个名叫 Final_Report.txt 的最终文件里,再发邮件给老板。这既繁琐又容易出错(比如忘了复制某一段)。
目标: 编写一个脚本,循环遍历一个文件名列表,读取它们的内容,然后自动将它们拼接(合并)成一个主文件。这就是自动化的魅力!

当你打开文件准备写入数据时:
"w"(Write/写入): 覆盖整个文件。如果你在一个循环里使用"w",那么最后只有最后一个部门的报告会被保存下来。"a"(Append/追加): 将内容添加到文件的末尾。这对于把多个文件拼接到一起至关重要。
工具箱:时间戳 (Datetime)
真正的架构师会给他们的日志打上时间戳。我们可以引入 datetime 模块来给我们的最终总结报告盖个戳。
from datetime import datetime
# 获取当前的日期和时间
now = datetime.now()
# 将其格式化为清晰的 "YYYY-MM-DD" 形式
date_string = now.strftime("%Y-%m-%d")
print(date_string)
你的任务
你有三个散落的文件: sales.txt, tech.txt, 和 hr.txt。请编写代码,将它们合并到 Final_Report.txt 中。
使用 with open("Final_Report.txt", "w") as final: 创建主文件。(第一步使用 "w" 是为了清空上一周可能残留的旧报告)。
在这个 with 块的里面,将大标题和今天的日期写入文件。例如:final.write(f"WEEKLY REPORT - {datetime.now().strftime('%Y-%m-%d')}\\n\\n")
创建一个列表:files = ["sales.txt", "tech.txt", "hr.txt"]。在主 with 块内部,启动一个 for file_name in files: 循环。
在循环内部,使用一个 嵌套 (Nested) 的 with open(...) 以读取 ("r") 模式打开当前部门的文件。
使用 .read() 读取部门文件的全部内容,然后使用 .write() 将其写入到 final 文件中。记得在末尾补上一个换行符 \\n,以便将不同部门的报告隔开。
参考答案点击展开点击收起
通过嵌套 (Nesting) with 语句,我们安全地将数据从多个源头“管道”输送到了一个单一的终点。这就是一键生成的本质!
from datetime import datetime
departments = ["sales.txt", "tech.txt", "hr.txt"]
# 以 Write(写入) 模式打开最终目的地(此操作会清空旧文件)
with open("Final_Report.txt", "w") as final_file:
# 写入表头,盖上时间戳
today = datetime.now().strftime("%Y-%m-%d")
final_file.write(f"--- WEEKLY REPORT ({today}) ---\n\n")
# 循环遍历资源文件数组
for dept_file in departments:
# 以 Read(读取) 模式打开每一个来源文件
with open(dept_file, "r") as source:
content = source.read()
final_file.write(content)
final_file.write("\n\n") # 加上空行间隔符
print("周报合并完成!")