🐸

周报合并器

Python 基础python-architect-32-the-report-compiler
奖励: 100 XP
|

周报合并器

每周五下午 5:00,你都要面临一项令人头大的行政任务。

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

合并周报流程图

写入 (w) vs 追加 (a)

当你打开文件准备写入数据时:

  • "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 中。

1
创建主文件

使用 with open("Final_Report.txt", "w") as final: 创建主文件。(第一步使用 "w" 是为了清空上一周可能残留的旧报告)。

2
生成表头

在这个 with 块的里面,将大标题和今天的日期写入文件。例如:final.write(f"WEEKLY REPORT - {datetime.now().strftime('%Y-%m-%d')}\\n\\n")

3
开始循环

创建一个列表:files = ["sales.txt", "tech.txt", "hr.txt"]。在主 with 块内部,启动一个 for file_name in files: 循环。

4
嵌套读取

在循环内部,使用一个 嵌套 (Nested)with open(...) 以读取 ("r") 模式打开当前部门的文件。

5
复制粘贴

使用 .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("周报合并完成!")
Loading...
终端输出
Terminal
Ready to run...