【头歌-Python】文件自学引导

禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301

  • 如果代码存在问题,麻烦大家指正 ~ ~
  • 有帮助麻烦点个赞 ~ ~

    文件自学引导

    • 第1关:读文件全部内容到一个字符串
    • 第2关:读文件前n个字符
    • 第3关:逐行读取并输出文件内容
    • 第4关:读取文件到列表中
    • 第5关:读取文件中的数据到二维列表
    • 第6关:将唐诗写入到文件中

第1关:读文件全部内容到一个字符串

任务描述
本关任务:编写一个能读文件全部内容到一个字符串的小程序。

相关知识
为了完成本关任务,你需要掌握:

  1. 文件的打开
  2. 读文件到字符串

文件的打开
内置函数open(file, mode='r', encoding=None)可以打开 file 并返回对应的文件对象(file object)
file 是一个可以带路径的文件名,mode 用于指定打开文件的模式。默认值是 'r' ,表示以文本模式打开并读取文件。其他常见模式有:写入模式 'w' (已存在文件会被清空)、独占创建模式 'x' 、追加写入模式 'a'
encoding用于在文本模式下指定编码格式,默认根据当前平台决定编码格式。
当使用 open() 以文本模式 ('w', 'r', 'wt', 'rt' 等) 打开文件时,它将返回 io.TextIOBase的一个子类io.TextIOWrapper

file = '/data/bigfiles/静夜思.txt'
f = open(file, mode='r', encoding='utf-8')  # f是为文件对象命名
print(f)

输出:

<_io.TextIOWrapper name='静夜思.txt' mode='r' encoding='utf-8'>

建议将open()函数用上下文管理器容器中,减少遇到异常关闭文件出错的问题。

file = '/data/bigfiles/静夜思.txt'
with open(file, mode='r', encoding='utf-8') as f:  # 文件对象命名放在as后面print(f)  # 操作文件的语句放在缩进的语句块中,离开缩进就关闭文件

输出:

<_io.TextIOWrapper name='静夜思.txt' mode='r' encoding='utf-8'>

读文件到字符串

  1. read(size) 无参数或参数为-1时,读取全部文件内容;
file = '/data/bigfiles/静夜思.txt'
with open(file, mode='r', encoding='utf-8') as f:  # 为文件对象命的名放在as后面txt = f.read()  # 将文件全部内容读入到字符串txt中
print(txt)

输出:

静夜思
李白
床前明月光,疑是地上霜。
举头望明月,低头思故乡。

编程要求
根据提示,在右侧编辑器补充代码,输出文件“出塞.txt”全部字符。文件路径和文件名为:‘/data/bigfiles/出塞.txt

测试说明
平台会对你编写的代码进行测试:

测试输入:

预期输出:

           出塞王昌龄()
秦时明月汉时关,万里长征人未还。
但使龙城飞将在,不教胡马度阴山。

提示:

  1. 每行末有一个换行符“\n

本单元可能用到的文件下载:
出塞.txt
8.1 静夜思.txt
唐诗三百首 (2022).txt
7.8 唐诗三百首.txt
8.2 score.csv
8.5 score.csv

开始你的任务吧,祝你成功!

参考代码

# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 参考教程:B站视频讲解 https://space.bilibili.com/3546616042621301
with open('/data/bigfiles/出塞.txt', mode='r', encoding='utf-8') as f: print(f.read())

第2关:读文件前n个字符

任务描述
本关任务:编写一个能读文件前n个字符的小程序。

相关知识
为了完成本关任务,你需要掌握:

  1. 读文件到字符串

读文件到字符串
2. read(size) 当参数size为大于或等于0的整数时,读取size个字符。

file = '/data/bigfiles/静夜思.txt'
with open(file, mode='r', encoding='utf-8') as f:  # 为文件对象命的名放在as后面txt = f.read(3)  # 将文件前3个字符读入到字符串txt中
print(txt)

输出:

静夜思

编程要求
根据提示,在右侧编辑器补充代码,输入一个正整数n,输出“出塞.txt”前n个字符。

测试说明
平台会对你编写的代码进行测试:

测试输入:

3

预期输出:

静夜思

测试输入:

13

预期输出:

静夜思
李白
床前明月光,

提示:

  1. 每行末有一个换行符“\n

开始你的任务吧,祝你成功!

参考代码

# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 参考教程:B站视频讲解 https://space.bilibili.com/3546616042621301
with open('/data/bigfiles/出塞.txt', mode='r', encoding='utf-8') as f: print(f.read(int(input())))

第3关:逐行读取并输出文件内容

任务描述
本关任务:编写一个能逐行读取并输出文件内容的小程序。

相关知识
为了完成本关任务,你需要掌握:

  1. 读文件到字符串
  2. 文件指针

读文件到字符串

  1. f.readline() 从文件中读取单行数据;字符串末尾保留换行符(\n),空行使用 ‘\n’ 表示,该字符串只包含一个换行符。
    f.readline() 返回空字符串时,表示已经到达了文件末尾。
file = '/data/bigfiles/静夜思.txt'
with open(file,'r',encoding = 'utf-8') as poem:  # 打开文件创建文件对象,命名为poemwhile txt := poem.readline():  # 逐行读文件,直至文件结束print(txt.strip())         # 去除行末的换行符后输出当前读到的字符串

输出:

静夜思
李白
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
  1. f.readline(size) 当参数size为大于或等于0的整数时,从指针所在处向后最多读取当前行的前size个字符,当前行剩余字符少于size时,读取到行末。

编程要求
根据提示,在右侧编辑器补充代码,输入一个文件名,用readline()方法逐行读取并输出文件内容,输出时去除每行末的换行符。

测试说明
平台会对你编写的代码进行测试:

测试输入:

静夜思.txt

预期输出:

静夜思
李白
床前明月光,疑是地上霜。
举头望明月,低头思故乡。

开始你的任务吧,祝你成功!

参考代码

# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 参考教程:B站视频讲解 https://space.bilibili.com/3546616042621301
file = '/data/bigfiles/' + input()
with open(file,'r',encoding = 'utf-8') as f:for line in f.readlines(): print(line.strip()) 

第4关:读取文件到列表中

任务描述
本关任务:编写一个能读取文件到列表中的小程序。

相关知识
为了完成本关任务,你需要掌握:

  1. 读文件到列表

读文件到列表

  1. readlines()
    无参数时,读取文件全部数据,返回一个列表,列表中每个元素是文件对象中的一行数据,包括行末的换行符’\n’。
file = '/data/bigfiles/静夜思.txt'
with open(file, 'r', encoding='utf-8') as poem:  # 打开文件创建文件对象,命名为poempoem_ls = poem.readlines()  # 读取文件内容到列表
print(poem_ls)

输出:

['静夜思\n', '李白\n', '床前明月光,疑是地上霜。\n', '举头望明月,低头思故乡。']
  1. readlines(hint)
    当参数hint为大于或等于0的整数时,返回文件从头到第hint个字符所在的行末。
file = '/data/bigfiles/静夜思.txt'
with open(file, 'r', encoding='utf-8') as poem:  # 打开文件创建文件对象,命名为poempoem_ls = poem.readlines(10)  # 读取文件,到第10个字符所在的行末
print(poem_ls)

输出:

['静夜思\n', '李白\n', '床前明月光,疑是地上霜。\n']

编程要求
根据提示,在右侧编辑器补充代码,输入一个文件名,将该文件内容转为列表输出。

测试说明
平台会对你编写的代码进行测试:

测试输入:

静夜思.txt

预期输出:

['静夜思\n', '李白\n', '床前明月光,疑是地上霜。\n', '举头望明月,低头思故乡。']

提示:

  1. 每行末有一个换行符“\n

开始你的任务吧,祝你成功!

参考代码

# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 参考教程:B站视频讲解 https://space.bilibili.com/3546616042621301
with open(input(), 'r', encoding='utf-8') as f:print(f.readlines())

第5关:读取文件中的数据到二维列表

任务描述
本关任务:编写一个能读取文件中的数据到二维列表的小程序。

相关知识
为了完成本关任务,你需要掌握:

  1. 字符串切分
  2. 遍历文件转二维列表

字符串切分

  1. txt.split(sep)
    根据分隔符sep对字符串txt进行切分,返回一个列表。
row = '姓名,C,Java,Python,C#\n'
print(row.strip())
# 去除行末换行符,姓名,C,Java,Python,C#
print(row.strip().split(','))  # 去除换行符后根据逗号切分为列表
# ['姓名', 'C', 'Java', 'Python', 'C#']

遍历文件
虽然readlines()方法可以将文件读取到二维列表中,但其元素仍为字符串。
很多存放数据的文件中每行数据是用逗号或空格分隔的,可以直接切分为列表,再加入到列表中,构成二维列表。
对于这样的需求,建议使用遍历文件对象的方法。

file = '../csv/8.2 score.csv'
score_ls = []  # 创建一个空列表
with open(file, 'r', encoding='utf-8') as fr:  # 打开文件创建文件对象,命名为poemfor row in fr:                    # 遍历文件对象,row为当前行lst = row.strip().split(',')  # 当前行切分为一个列表score_ls.append(lst)          # 将当前行切分得到的列表附加到score_ls中
print(score_ls)  # 输出二维列表

列表推导式方法:

file = '../csv/8.2 score.csv'
with open(file, 'r', encoding='utf-8') as fr:  # 打开文件创建文件对象,命名为poemscore_ls = [row.strip().split(',') for row in fr]                    # 遍历文件对象,row为当前行
print(score_ls)  # 输出二维列表

输出:

[['姓名', 'C', 'Java', 'Python', 'C#'], 
['罗明', '95', '96', '85', '63'], 
['朱佳', '75', '93', '66', '85'],
['李思', '86', '76', '96', '93'], 
['郑君', '88', '98', '76', '90'], 
['王雪', '99', '96', '91', '88']]

编程要求
根据提示,在右侧编辑器补充代码,输入一个文件名,先读输出文件的第一行,再将该文件其他内容转为列表输出。

测试说明
平台会对你编写的代码进行测试:

测试输入:

score.csv

预期输出:

[['姓名', 'C', 'Java', 'Python', 'C#'], ['罗明', '95', '96', '85', '63'], ['朱佳', '75', '93', '66', '85'], ['李思', '86', '76', '96', '93'], ['郑君', '88', '98', '76', '90'], ['王雪', '99', '96', '91', '88']] 

提示:

  1. 每行末有一个换行符“\n

开始你的任务吧,祝你成功!

参考代码

# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 参考教程:B站视频讲解 https://space.bilibili.com/3546616042621301
with open('/data/bigfiles/'+input(), 'r', encoding='utf-8') as f:ls = [line.strip().split(',') for line in f]print(ls)

第6关:将唐诗写入到文件中

任务描述
本关任务:编写一个能将指定序号的唐诗写入到单独的文件中的小程序。

相关知识
为了完成本关任务,你需要掌握:

  1. 文件写入

文件写入

  1. f.write(s)
    将字符串s写入到文件对象f中。
file = '233李白:静夜思.txt'
poem = '静夜思\n李白\n床前明月光,疑是地上霜。\n举头望明月,低头思故乡。\n'
with open(file, 'w', encoding='utf-8') as fw:  # 打开文件创建文件对象,命名为poemfw.write(poem)

编程要求
根据提示,在右侧编辑器补充代码,输入一个3位数字字符表示的诗的序号,从文件“/data/bigfiles/唐诗三百首.txt”中读出指定序号的诗句,再将该诗单独写入到以该诗序号开始的行为文件名的文件中。

测试说明
平台会对你编写的代码进行测试:

测试输入:

237

预期输出:
创建文件:

237刘长卿:送灵澈.txt

文件内容如下:

237刘长卿:送灵澈苍苍竹林寺,杳杳钟声晚。
荷笠带斜阳,青山独归远。

提示:

  1. 每行末有一个换行符“\n

开始你的任务吧,祝你成功!

参考代码

# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/139258793
# 参考教程:B站视频讲解 https://space.bilibili.com/3546616042621301
def get_poem(file):"""读唐诗300首,定位到用户输入的序号的诗,将该首诗读取为一个字符串,返回去除末尾空白字符的字符串"""poem = '' poet_flag = Falsewith open(file, 'r', encoding='utf-8') as f: for line in f:if  line[:3] == str(num):poem = poem + linepoet_flag = Trueelif line[0] in '0123456789': poet_flag = Falseelif poet_flag:poem = poem + linereturn poemdef write_poem(line):"""参数是包含指定序号诗句的字符串,提取诗的标题行做为要写入的文件名,将全部诗句按顺序写入到文件中,返回诗的标题行"""title = line.split(maxsplit=1)[0]with open(title+'.txt', 'w', encoding='utf-8') as f:f.write(line)return titledef check_file(file):"""参数是新创建的文件名,读取新创建并写入诗句的文件,检查是否写入成功,无返回值"""with open(file, 'r', encoding='utf-8') as fr:print(fr.read())            # 文件读取为一个字符串并输出if __name__ == '__main__':filename = '/data/bigfiles/唐诗三百首.txt'  # 源文件路径num = input()  # 输入序号poem_str = get_poem(filename)     # 读取指定序号的诗为字符串file_title = write_poem(poem_str)  # 字符串写入文件,并返回标题check_file(file_title+'.txt')     # 查看写入的文件,输出诗的内容

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

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

相关文章

算数运算符

算术运算符是用于数值类型变量计算的运算符。 它的返回结果是数值。 赋值符号 关键知识点&#xff1a;先看右侧&#xff0c;再看左侧&#xff0c;把右侧的值赋值给左侧的变量。 附上代码&#xff1a; string myName "唐唐"; int myAge 18; float myHeight 177.5…

202312青少年软件编程(Python)等级考试试卷(四级)

第 1 题 【单选题】 下列有关分治算法思想的描述不正确的是?( ) A :将问题分解成的子问题具有相同的模式 B :将问题分解出的各个子问题相互之间有公共子问题 C :当问题足够小时,可以直接求解 D :可以将子问题的求解结果合并成原问题的解 正确答案:B 试题解析: 第 2…

ADIL简单测试实例

参考资料&#xff1a;https://blog.csdn.net/geyichongchujianghu/article/details/130045373这个连接是Java的代码&#xff0c;我根据它的链接写了一个kotlin版本的。 AIDL&#xff08;Android Interface Definition Language&#xff09;是Android平台上用于进程间通信&…

AI办公自动化:kimi批量新建文件夹

工作任务&#xff1a;批量新建多个文件夹&#xff0c;每个文件夹中的年份不一样 在kimi中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个编写关于录制电脑上的键盘和鼠标操作的Python脚本的任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹&…

FFmpeg编解码的那些事(1)

看了网上很多ffmpeg的编解码的文章和代码&#xff0c;发现有很多文章和代码都过时了&#xff0c;主要还是ffmpeg有很多接口都已经发生变化了。 这里简单说一下&#xff0c;什么是编码和解码。 1.视频编码 对于视频来说&#xff0c;可以理解为多张&#xff08;rgb或者yuv&…

Python散点图矩阵代码模版

本文分享Python seaborn实现散点图矩阵代码模版&#xff0c;节选自&#x1f449;嫌Matplotlib繁琐&#xff1f;试试Seaborn&#xff01; 散点图矩阵&#xff08;scatterplot matrix&#xff09;展示原始数据中所有变量两两之间关系&#xff0c;可以规避单一统计指标的偏差&…

二分查找算法详讲(三种版本写法)原创

介绍: 二分查找算法&#xff08;Binary Search&#xff09;是一种在有序数组中查找目标元素的算法。 它的基本思想是通过将目标元素与数组的中间元素进行比较&#xff0c;从而将搜索范围缩小一半。 如果目标元素等于中间元素&#xff0c;则搜索结束&#xff1b;如果目标元素小…

Neural Filters:照片恢复

Ps菜单&#xff1a;滤镜/Neural Filters/恢复/照片恢复 Neural Filters/RESTORATION/Photo Restoration 照片恢复 Photo Restoration借助 AI 强大功能快速恢复旧照片&#xff0c;提高对比度、增强细节、消除划痕。将此滤镜与着色相结合以进一步增强效果。 “照片恢复”滤镜利用…

Scikit-Learn随机森林

Scikit-Learn随机森林 1、随机森林1.1、集成学习1.2、Bagging方法1.3、随机森林算法1.4、随机森林的优缺点2、Scikit-Learn随机森林回归2.1、Scikit-Learn随机森林回归API2.2、随机森林回归实践(加州房价预测)1、随机森林 随机森林是一种由决策树构成的集成算法,它在大多情况…

mac安装的VMware虚拟机进行桥接模式配置

1、先进行网络适配器选择&#xff0c;选择桥接模式 2、点击网络适配器 设置... 3、选择WiFi&#xff08;我使用的是WiFi&#xff0c;所以选择这个&#xff09;&#xff0c;注意看右边的信息&#xff1a;IP和子网掩码&#xff0c;后续配置虚拟机的ifcfg-ens文件会用到 4、编辑if…

【论文阅读笔记】The Google File System

1 简介 Google File System (GFS) 是一个可扩展的分布式文件系统&#xff0c;专为快速增长的Google数据处理需求而设计。这篇论文发表于2003年&#xff0c;此前已在Google内部大规模应用。 GFS不仅追求性能、可伸缩性、可靠性和可用性等传统分布式文件系统的设计目标&#xf…

benchmark::State benchmark 原理

benchmark::State benchmark::State是Google Benchmark库中的一个核心类&#xff0c;用于管理单个基准测试的状态信息和控制基准测试的执行流程。在编写基准测试时&#xff0c;这个类提供了一套丰富的接口&#xff0c;允许用户获取测试循环的次数、调整测试参数、测量时间等&a…

P9 【力扣+知识点】【算法】【二分查找】C++版

【704】二分查找&#xff08;模板题&#xff09;看到复杂度logN&#xff0c;得想到二分 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0…

企业微信hook接口协议,ipad协议http,语音转文字

语音转文字 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信msgid是int要转文字的语音消息id 请求示例 {"uuid":"a4ea6a39-4b3a-4098-a250-2a07bef57355","msgid":1063645 } 返回示例 {"data&…

电源模块测试系统怎么测试输入电压范围?

在现代电子设备中&#xff0c;电源模块的性能直接影响着整个系统的稳定性和效率。其中&#xff0c;电源输入电压范围是指电源能够接受的输入电压的最小值和最大值&#xff0c;它是确保电源正常工作的重要参数。为了提高测试效率和精度&#xff0c;自动化的测试方法逐渐取代了传…

【Game】Rumble Heroes

文章目录 1 英雄2 守护兽3 符文4 祝福5 阵容推荐6 Boss7 兑换码 1 英雄 &#xff08;1&#xff09;力量 神话英雄 圣骑士-乌瑟尔 传说英雄 双刀-宫本武藏死亡骑士-阿萨斯冰霜骑士-亚瑟疾风焰刃-缘壹熊猫武僧-阿宝 史诗英雄 大剑-克劳德狂战士-奎托斯魔山-克里刚猎人-奈辛瓦里 稀…

宝塔部署Java+Vue前后端分离项目

1. 服务器 服务器选择Linux的CentOS7的版本 2. 宝塔Linux面板 2.1 百度搜索宝塔 2.2 进去之后点击立即免费安装 2.3 选择Linux在线安装&#xff0c;输入服务器信息进行安装(也可以选择其他方式) 安装完成之后会弹一个宝塔的应用面板&#xff0c;并附带有登录名称和密码&…

多模态大模型:系统、趋势与问题

引言 多模态大模型是当今人工智能领域的热门方向之一。它不仅能处理文本&#xff0c;还能理解和生成图像、视频、语音等多种模态的数据。这种能力使得多模态大模型在自然语言处理、计算机视觉等多个领域展示出巨大的潜力和应用价值。那么&#xff0c;多模态大模型是如何训练出…

AI菜鸟向前飞 — LangChain系列之十五 - Agent系列:从现象看机制(中篇)一个Agent的“旅行”

Agent基本架构 先谈谈Agent基本架构概念&#xff0c;如果看得云里雾里&#xff0c;等看完本篇之后&#xff0c;再回头看就会豁然开朗的&#xff0c;而我尽量写得更易懂&#xff1a; &#xff09; 这里面会穿插着上一篇的内容&#xff0c;请大家记得往回翻翻&#xff0c;传送门&…

MySQL 慢查询优化指南

MySQL 慢查询优化指南 在现代数据库管理中&#xff0c;性能优化是一个不可忽视的重要环节。尤其是对于高并发、大数据量的应用&#xff0c;慢查询可能会成为系统的性能瓶颈。本文将介绍如何查看和优化 MySQL 的慢查询&#xff0c;帮助你提高数据库性能。 一、什么是慢查询&am…