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

news/2025/11/20 5:38:21/文章来源:https://www.cnblogs.com/wangya216/p/19244643

题目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()会去除首尾空格和换行符,若结果非空,则为有效行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/970545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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

题目1:基础文本读取(r模式) 补全程序,读取文本文件的前2行并打印(去除每行首尾空格): # 文件content.txt内容: # 第一行:Python文件操作 # 第二行:基础模式练习 # 第三行:进阶技巧 with open("…

应用安全 --- IDAPro函数控制流分析

应用安全 --- IDAPro函数控制流分析函数控制流也叫交叉引用流,用于查看某个函数调用的所有其他函数 右键函数名称选择 来自交叉引用,查看引用图 我们可以通过分析发现调用的越深越有可能是重要函数 调用其他函数越多…

应用安全 --- IDAPro 函数控制流分析

应用安全 --- IDAPro 函数控制流分析函数控制流也叫交叉引用流,用于查看某个函数调用的所有其他函数 右键函数名称选择 来自交叉引用 我们可以通过分析发现调用的越深越有可能是重要函数 调用其他函数越多越有可能是初…

应用安全 --- IDA Pro 函数控制流

应用安全 --- IDA Pro 函数控制流函数控制流也叫交叉引用流,用于查看某个函数调用的所有其他函数 右键函数名称选择 来自交叉引用 我们可以通过分析发现调用的越深越有可能是重要函数 调用其他函数越多越有可能是初始…

AI元人文:阈值理论体系——自由、公平、安全的动态边界与调控艺术

AI元人文:阈值理论体系——自由、公*、安全的动态边界与调控艺术 摘要:本文在“AI元人文三值纠缠理论”的基础上,提出并系统论述了“阈值理论体系”。该体系认为,健全的个人、组织与文明并非追求自由、公*、安全三…

应用安全 --- 看门狗函数

应用安全 --- 看门狗函数看门狗函数就是第一个执行的安全检查函数,不会对环境有任何影响,目的就是检查代码的执行环境是不是安全

AI元人文三值纠缠理论:从心智结构到文明形态的统一场论

AI元人文三值纠缠理论:从心智结构到文明形态的统一场论 在人类认知的边界,我们始终追寻一种能够贯通微观心智与宏观文明的元理论。AI元人文三值纠缠理论的提出,正是这种探索的里程碑式突破。该理论不仅构建了理解复…

现代数据科学的环境管理利器:Conda 完整指南

现代数据科学的环境管理利器:Conda 完整指南现代数据科学的环境管理利器:Conda 完整指南 1. Conda 简介与核心概念 1.1 什么是 Conda? Conda 是一个开源的包管理系统和环境管理系统,能够快速安装、运行和更新软件包…

LaTeX Beamer自动分页

\begin{frame}[allowframebreaks]{标题} % 使用allowframebreaks选项自动分页 \framebreak % 强制手动另起一页 \end{frame}

Google Antigravity 登录不了等问题的解决方法

Google Antigravity 登录不了等问题的解决方法昨天 Google Antigravity 一直卡在 Setting Up Your Account 这里。 到了今天,又提示账号问题: Sorry, this account is ineligible to use AntigravityYour current ac…

VsCode中运行Uniapp项目

1、下载VsCode后将Uniapp项目在VsCode中打开 Vscode下载地址2、安装插件uniapp run并设置软件地址 3、创建launch.json配置文件launch.json内容如下{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述…

MyBatis-Spring整合核心:SqlSessionFactoryBean深度解析

MyBatis-Spring整合核心:SqlSessionFactoryBean深度解析MyBatis-Spring整合核心:SqlSessionFactoryBean深度解析 概述 在MyBatis与Spring框架的整合中,SqlSessionFactoryBean扮演着至关重要的角色。它是连接两个框架…

Windows-sfc

Windows-sfc导航 (返回顶部)1. sfc1.1 Syntax 1.2 Parameters 1.3 Examples 1.4 扫描修复 1.5 CBS.log 1.6 更多相关链接2. sfc与DISM2.1 主要区别 2.2 参考链接3. chkdsk3.1 Parameters 3.2 HDD-SSD 3.3 查看 chkdsk…

SSH 连接报错 bad ownership or modes for directory 解决

某天某用户突然报告说 SSH 不能登录了,经查看 /var/log/auth.log 发现报错如下: 2025-11-20T01:57:53.957884+08:00 h101 sshd[3191378]: Authentication refused: bad ownership or modes for directory /home/ubun…

高精度进制转换

#include <bits/stdc++.h> using namespace std;int val(char c) { // 字符转值if (c >= 0 && c <= 9) return c - 0;if (c >= A && c <= Z) return c - A + 10;return c - a + 36;…

20232325 2025-2026-1 《网络与系统攻防技术》实验六实验报告

Metasploitable2靶机渗透测试实验报告 1. 实验内容 1.1 前期渗透Metasploitable2靶机,发现靶机并进行端口、漏洞扫描 1.2 Metasploit攻击渗透方法实践 (1)Vsftpd源码包后门漏洞(21端口) (2)SambaMS-RPC Shell命…

AI元人文:赋能技术人文深度融合的法治新范式

AI元人文:赋能技术与人文深度融合的法治新范式 摘要:人工智能的迅猛发展正以前所未有的深度和广度重塑人类社会,同时对建立于工业文明基石之上的传统法治体系构成了系统性挑战。法律的滞后性、规则的抽象性与监管的…

3100+星标开源商城系统!SparkShop:从技术架构到全场景营销的电商解决方案

2025年11月,一款名为SparkShop的开源商城系统在Gitee上悄然突破3100星标,成为国内电商开发者社区的热议焦点。这款基于ThinkPHP 8 + Element UI的免费商用系统,以"插件化架构"和"多端适配"为核…

[K8s/资源调度] Volcano : 基于Kubernetes的【批量】容器【资源调度】平台

1 概述Volcano是 CNCF 下首个也是唯一的基于Kubernetes的容器批量计算平台,主要用于高性能计算场景。 Volcano 是一个开源的 Kubernetes 批处理系统,专为高性能计算任务设计。它提供了一种高效的方式来管理和调度资源…

Yanhua Mini ACDP-2 Volvo 2015-2021: Add Key All Key Lost for Semi/Full-Keyless

The Challenge: Key Issues with Modern Volvo Keyless Systems Modern Volvo keyless systems—whether semi-keyless (traditional remote with push-to-start) or full-keyless (passive entry, start-stop without…