文件翻转教学python

2023-11-06

目录

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

第2关 读文件前n个字符

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

第4关 读取文件到列表中

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

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


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

任务描述

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

相关知识

为了完成本关任务,你需要掌握: 1.文件的打开 2.读文件到字符串

file = '/data/bigfiles/出塞.txt'
with open(file, mode='r', encoding='utf-8') as f:  # 为文件对象命的名放在as后面
    txt = f.read()  # 将文件全部内容读入到字符串txt中
print(txt)

第2关 读文件前n个字符

任务描述

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

相关知识

为了完成本关任务,你需要掌握: 1.读文件到字符串

读文件到字符串

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

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

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

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

相关知识

为了完成本关任务,你需要掌握: 1.读文件到字符串 2.文件指针

读文件到字符串

1.f.readline() 从文件中读取单行数据;字符串末尾保留换行符(\n),空行使用 '\n' 表示,该字符串只包含一个换行符。 f.readline() 返回空字符串时,表示已经到达了文件末尾。

n = input()
file = '/data/bigfiles/'+n
with open(file,'r',encoding = 'utf-8') as poem:  # 打开文件创建文件对象,命名为poem
    while txt := poem.readline():  # 逐行读文件,直至文件结束
        print(txt.strip())         # 去除行末的换行符后输出当前读到的字符串

第4关 读取文件到列表中

任务描述

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

相关知识

为了完成本关任务,你需要掌握: 1.读文件到列表

读文件到列表

1.readlines() 无参数时,读取文件全部数据,返回一个列表,列表中每个元素是文件对象中的一行数据,包括行末的换行符’\n’。

file = input()
with open(file, 'r', encoding='utf-8') as poem:  # 打开文件创建文件对象,命名为poem
    poem_ls = poem.readlines()  # 读取文件,到第10个字符所在的行末
print(poem_ls)

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

任务描述

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

相关知识

为了完成本关任务,你需要掌握: 1.字符串切分 2.遍历文件转二维列表

字符串切分

1.txt.split(sep) 根据分隔符sep对字符串txt进行切分,返回一个列表。

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

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

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

测试说明

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

测试输入: 237

预期输出: 创建文件: 237刘长卿:送灵澈.txt

def get_poem(file):
    """读唐诗300首,定位到用户输入的序号的诗,将该首诗读取为一个字符串,返回去除末尾空白字符的字符串"""
    poem = ''                              # 空字符串,用于容纳目标诗
    poet_flag = False                      # 做一个标记,假定当前行不是目标诗
    with open(file, 'r', encoding='utf-8') as fr:  # 创建文件对象
            for line in fr:                    # 遍历文件对象
                # 当当前行包含序号(序号用3位数,不足3位前面补0)时,将当前行拼接到poem上,改变poet_flag的值为True
                if  line[:3] == str(num):
                    poem = poem + line
                    poet_flag = True
                elif line[0] in '0123456789':  # 若当前行不包含序号但有数字
                    poet_flag = False          # 改变标记,后续几行不是目标诗句
                elif poet_flag:                # 如果标记值为真(True)
                    poem = poem + line         # 将当前行拼接到字符串上
            return poem                        # 遍历结束后返回包含目标诗的字符串


def write_poem(line):
    """参数是包含指定序号诗句的字符串,提取诗的标题行做为要写入的文件名,将全部诗句按顺序写入到文件中,返回诗的标题行"""

    title = line.split(maxsplit=1)[0]  # 这里的maxsplit参数是最大拆分数,我们只需要拆分一次
    with open(title+'.txt', 'w', encoding='utf-8') as f:
        f.write(line)
        return title


def 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')     # 查看写入的文件,输出诗的内容

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件翻转教学python 的相关文章

  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • 如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

    我在 Cloud9 中使用 Python AWS CDK 并且我部署简单的 Lambda 函数那应该是发送 API 请求到 Atlassian 的 API当对象上传到 S3 存储桶时 也是由 CDK 创建的 这是我的 CDK 堆栈代码 fr
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 以同步方式使用 FastAPI,如何获取 POST 请求的原始正文?

    在中使用 FastAPIsync not async模式 我希望能够接收 POST 请求的原始 未更改的正文 我能找到的所有例子都显示async代码 当我以正常同步方式尝试时 request body 显示为协程对象 当我通过发布一些内容来
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • python Soap zeep模块获取结果

    我从 SOAP API 得到如下结果 client zeep Client wsdl self wsdl transport transport auth header lb E authenticate self login res cl
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M
  • 字典和数组作为类变量与实例变量

    这是赚取积分的简单方法 请解释以下内容 class C a b 0 c def init self self x def d self k v self x k v self a k v self b v self c append v d
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包

随机推荐

  • 进入U盘PE系统无法识别硬盘分区的原因分析和解决方法

    进入U盘PE系统无法识别硬盘分区的原因分析和解决方法 时间 2015 07 15 来源 http www xitongtiandi com 复制网址 进入U盘PE系统无法识别硬盘分区的原因分析和解决方法分享给大家 PE Windows PE
  • Sqli-labs靶场详细攻略Less 23-28a

    Less 23 28a Less 23 GET Error based strip comments 这一关还是使用get方法进行注入 不过这次对 这些用于注释的字符做了过滤 这样我们可以使用两个 进行绕过 第一个 用于闭合原代码语句中的前
  • 【建议收藏】11+实战技巧,让你轻松从Vue过渡到React

    前言 在这个卷神辈出的时代 只是熟练Vue的胖头鱼 已经被毒打过多次了 面试中曾被质疑 你居然不会React 我无语凝噎 不知说啥是好 这篇文章尝试将Vue中一些常见的功能在React中实现一遍 如果你恰巧是Vue转React 或者Reac
  • Shell笔记--Shell使用系统变量、自定义变量、特殊变量和运算符

    目录 1 Shell使用系统变量 2 Shell使用自定义变量 3 特殊变量 3 1 n 3 2 3 3 和 3 4 4 运算符 1 Shell使用系统变量 常用的系统变量有 HOME PWD SHELL USER 等 echo HOME
  • Spring 基础教程之三:JavaBean生命周期

    Spring中Bean 的生命周期 在学习 spring 的过程中 bean 的生命周期理解对学习 spring 有很大的帮助 下面我就分别介绍在 ApplicationContext 和 BeanFactory 中 Bean 的生命周期
  • CrtIsValidHeapPointer(block)错误

    删除线格式 CrtIsValidHeapPointer block 内存错误 今天写代码时VS2019报了 CrtIsValidHeapPointer block 的错误 VS报错 https img blog csdnimg cn 202
  • chatgpt赋能python:免费的Python编程软件:开发者必备工具!

    免费的Python编程软件 开发者必备工具 Python是一门广受欢迎的编程语言 它已经成为了很多公司和开发者的首选语言 Python的出现改变了编程的方式 它具有简单 易懂 易读 易写 易拓展等特点 因此成为了很多新手入门的语言 Pyth
  • 火山视窗超级列表框-报表列表框操作

    本源码转载自利快云https www lkuaiy com 火山视窗超级列表框 报表列表框操作 想要使用本组件首选需要配置mfc扩展界面支持类库模块 超级列表框组件是火山中非常常用的一个组件 共有几种类型 大图标列表框 小图标列表框 普通列
  • 各种加密算法比较

    各种加密算法比较 算法选择 对称加密AES 非对称加密 ECC 消息摘要 MD5 数字签名 DSA 对称加密算法 加解密密钥相同 名称 密钥长度 运算速度 安全性 资源消耗
  • 根据文件夹修改时间自动打包ZIP

    Automatically package to zip file based on the modification time of the folder echo off set file dist for A in file do s
  • R-CNN算法详解

    这是一篇比较早的Object Detection算法 发表在2014年的CVPR 也是R CNN系列算法的开山之作 网上可以搜到很多相关的博客讲解 本篇博文没有按论文顺序来讲述 而是结合自己经验来看这个算法 希望给初学者一个直观的感受 细节
  • 普通人如何通过网络实现在家赚钱?

    作者 杨小二 来源 杨小二的小江湖 前言 2020年1月份的时候 在网上看到一则新闻说 2020年底前全面取消事业编制 32种事业工种打破铁饭碗 这件事情 在我们这个IT圈里还引起了大家的一些讨论 本想着考个公务员来养老 看来是没有希望了
  • Redis的哨兵模式以及工作原理

    Redis的哨兵模式以及工作原理 哨兵的作用 通过发送命令 让Redis服务器返回监控其运行状态 包括主服务器和从服务器 当哨兵监测到master宕机 会自动将slave切换成master 然后通过发布订阅模式通知其他的从服务器 修改配置文
  • C#读取硬盘物理序列号-非管理员权限

    using System using System Collections Generic using System Text using System Runtime InteropServices namespace SCBLL Com
  • 服务器(Linux系统)指定目录安装Anaconda教程

    1 下载 通过weg命令下载 Xshell终端输入命令 wget c https repo anaconda com archive Anaconda3 2020 11 Linux x86 64 sh 输入后开始下载 我这里用的pychar
  • VC++如何计算一段代码的执行时间

    单位为毫秒 在程序调试的过程中 VS2010包含
  • java/php/net/python会员健身系统管理设计

    本系统带文档lw万字以上 答辩PPT 查重 如果这个题目不合适 可以去我上传的资源里面找题目 找不到的话 评论留下题目 或者站内私信我 有时间看到机会给您发 本课题要求实现一套会员健身系统管理 系统功能包括会员 个人资料管理 教练信息管理
  • 使用 VS2022 配置 QT 开发环境的步骤

    使用 VS2022 配置 QT 开发环境的步骤 QT 是一个跨平台的 C GUI 库 可以在 Windows Mac Linux 等操作系统上运行 在 Visual Studio 2022 中配置 QT 的开发环境 可以让开发者在 Wind
  • Label Assignment

    前言 今天在研究四点模型的时候 了解到一个新概念 Label Assignment 记录一下 Label assignment 参考文档 目标检测中的Label Assignment Label assignment 主要是指检测算法在训练
  • 文件翻转教学python

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