尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【I/O编程与异常】文件操作补全程序题

【I/O编程与异常】文件操作补全程序题
📅 发布时间:2026/6/21 2:06:29

题目1:基础文本读取(r模式)

补全程序,读取文本文件的前2行并打印(去除每行首尾空格):

# 文件content.txt内容:
#  第一行:Python文件操作  
#  第二行:基础模式练习  
#  第三行:进阶技巧  with open("content.txt", "____") as f:________

答案:

with open("content.txt", "r") as f:print(f.readline().strip())  # 读取第一行并去空格print(f.readline().strip())  # 读取第二行并去空格

解析:r为默认文本只读模式,readline()逐行读取,strip()清除首尾空格(包括换行符),符合“打印有效内容”的需求。

题目2:二进制文件读取(rb模式)

补全程序,读取图片文件的前10字节(文件标识头,用于验证文件类型):

# 读取图片文件的前10字节(如PNG文件标识头为b'\x89PNG\r\n\x1a\n')
try:with open("image.png", "____") as f:____  # 读取前10字节print(f"文件标识头:{header.hex()}")  # 以十六进制打印
except FileNotFoundError:print("文件不存在")

答案:

try:with open("image.png", "rb") as f:header = f.read(10)  # 读取前10字节(bytes类型)print(f"文件标识头:{header.hex()}")
except FileNotFoundError:print("文件不存在")

解析:图片为二进制文件,必须用rb模式;read(10)返回bytes类型,hex()转换为十六进制便于查看文件标识(如PNG/JPG的特征头)。

题目3:追加日志并读取(a+模式)

补全程序,向日志文件追加一条操作记录后,读取并打印最新的3条日志:

import time# 日志格式:[时:分:秒] 操作描述
new_log = f"[{time.strftime('%H:%M:%S')}] 用户退出\n"with open("system.log", "____") as f:____  # 追加新日志____  # 移动指针到文件开头(准备读取)# 读取所有行,取最后3条all_lines = f.readlines()latest_3 = all_lines[-3:] if len(all_lines)>=3 else all_linesprint("最新3条日志:")for line in latest_3:print(line.strip())

答案:

with open("system.log", "a+") as f:f.write(new_log)  # 追加新日志到末尾f.seek(0)  # 移动指针到开头,否则readlines()返回空all_lines = f.readlines()# 后续代码不变

解析:a+模式支持“追加+读取”,但write()后指针默认在末尾,必须用seek(0)移到开头才能读取全部内容;readlines()返回所有行的列表,取后3条即为最新记录。

题目4:修改文件指定行(r+模式)

补全程序,将文件第2行(索引1)的内容修改为“2. 修改后的内容”:

# 文件info.txt原始内容:
# 1. 初始行
# 2. 待修改行
# 3. 末尾行with open("info.txt", "____") as f:# 读取所有行到列表(便于修改)lines = f.readlines()# 确保文件至少有2行再修改if len(lines) >= 2:lines[1] = "2. 修改后的内容\n"  # 替换第2行# 移动指针到文件开头(准备重写)____# 清空原有内容(从当前指针位置截断)f.truncate()  # 截断文件—— 简单说就是「从指定位置开始,删除文件后续所有内容,只保留该位置之前的部分」(避免原内容残留)# 写入修改后的所有行f.writelines(lines)

答案:

with open("info.txt", "r+") as f:lines = f.readlines()if len(lines) >= 2:lines[1] = "2. 修改后的内容\n"f.seek(0)  # 移到开头,确保从首字节开始重写f.truncate()  # 截断文件—— 简单说就是「从指定位置开始,删除文件后续所有内容,只保留该位置之前的部分」(避免原内容残留)f.writelines(lines)

解析:r+模式支持读写且保留原内容,适合“先读后改”;truncate()必须在seek(0)后调用,否则会从读取后的指针位置(末尾)截断,导致原内容无法清空。

题目5:大文件复制(rb/wb模式)

补全程序,分块复制大文件(每次读取1MB,避免占用过多内存):

# 复制大文件(如zip压缩包,大小可能超过内存)
source = "large_file.zip"
dest = "backup.zip"
chunk_size = 1024 * 1024  # 1MB/块with open(source, "____") as src_file, open(dest, "____") as dst_file:while True:____  # 读取一块数据if not chunk:  # 读取到空,说明文件结束break____  # 写入这一块数据到目标文件

答案:

with open(source, "rb") as src_file, open(dest, "wb") as dst_file:while True:chunk = src_file.read(chunk_size)  # 读取1MB二进制数据if not chunk:breakdst_file.write(chunk)  # 写入二进制数据

解析:非文本文件必须用二进制模式(rb读/wb写);分块读写(read(chunk_size))是处理大文件的标准方式,避免一次性加载整个文件到内存(导致内存溢出)。

题目6:统计文件有效行数(r模式)

补全程序,统计文本文件中“非空且非纯空格”的行数:

# 统计有效行数:忽略空行和仅含空格的行
valid_count = 0with open("data.txt", "____") as f:____  # 遍历文件的每一行# 判断是否为有效行(去除空格后不为空)if line.strip():valid_count += 1print(f"有效行数:{valid_count}")

答案:

valid_count = 0with open("data.txt", "r") as f:for line in f:  # 逐行迭代(内存友好,无需一次性读所有行)if line.strip():valid_count += 1print(f"有效行数:{valid_count}")

解析:for line in f是遍历文本文件的高效方式(逐行读取,不占用大量内存);strip()会去除首尾空格和换行符,若结果非空,则为有效行。

相关新闻

  • 应用安全 --- 看门狗函数
  • LaTeX Beamer自动分页
  • 高精度进制转换

最新新闻

  • 从SCF5250实战解析芯片Datasheet:电气特性与封装规格设计指南
  • AI全栈开发实战:Next.js+dbx构建可调试可恢复的GPT-5.5链路
  • 图像篡改检测与定位:从传统方法到深度学习实战
  • [IOI 2000] 邮局原始版、加强版、加强加强版
  • 英雄联盟战绩查询终极指南:3步安全使用Seraphine保护你的账号
  • 英雄联盟智能管家:如何用自动化工具提升你的游戏体验?

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号