python入门篇09- 文件操作,函数, 包及模块的综合案例

2023-09-20 09:08:56


1.前言简介

1.1 专栏传送门

python基础总专栏 (持续更新)

2. 前文知识梳理

文件操作 open()
函数定义
包定义
模块定义
引用包 引入模块 引用函数

3. 前文总结案例

案例内容随意 主要是看操作

3.1 案例介绍

首先: 输入文件名

  • 第一次没有这个文件 提示没有文件

其次: 输入字符串

  • 填写截取的开始位置结束位置(均包含)
  • 将截取的字符串反转并输出

最终: 将反转后的字符串插入到(输入的文件名)文件内

  • 输出最终文件内容

其中校验尽量加, 异常捕获尽可能的细致一些, 效果实现即可

3.1.0 案例包结构

caseTest 主包

test_case.py 主程序入口
case_utils 工具包文件夹

init.py
file_util.py
string_util.py
file 文件夹

pzy.txt 案例创建的txt

3.1.1 案例拆解

一: 自定义包 case_utils

  • 模块1 字符串相关操作
    –> 1.1 字符串反转 (str)
    –> 1.2 字符串切片(str x y)
  • 模块2 文件相关操作
    –> 2.1 打开文件 输出全部 注意捕获异常 finally关闭流等
    –> 2.2 文件追加 没有文件创建文件 有则追加

二: 导入包及模块并使用测试

  • 效果如下即为成功

3.1.2 案例操作效果

如图所示:

在这里插入图片描述

文字形式(直观展示)

请输入文件名称:pzy
抱歉文件不存在,信息是-> [Errno 2] No such file or directory: ‘./case_utils/file/pzy.txt’
请输入需要操作的字符串:
123yzp456
请输入需要截取的开始位置(包含):
4
请输入需要操作的结束位置(包含):
6
截取后的字符串是yzp
数字反转, 结果是: pzy
追加程序执行成功, 追加内容是:-> pzy
pzy

3.2 代码实现

部分注释省略, 太多没必要

3.2.1 工具包一: file_util.py

"""
    文件相关操作
"""


def read_file(path):
    t = None
    try:
        t = open(path, 'r', encoding='utf-8')
        print(t.read())
    except FileNotFoundError as attributeError:
        print(f"抱歉文件不存在,信息是-> {attributeError}")
    except Exception as exception:
        print(exception)
    finally:
        if t is not None:
            t.close()


def additional_file(path, str_arg):
    t = None
    try:
        t = open(path, 'a', encoding='utf-8')
        t.write(str_arg)
        t.flush()
        print(f"追加程序执行成功, 追加内容是:-> {str_arg}")
    except Exception as a:
        print(a)
        print("出现异常!")
    finally:
        if t is not None:
            t.close()


if __name__ == '__main__':
    additional_file("pzy_test.txt", "hello pzy! ")
    read_file("pzy_test.txt")

3.2.2 工具包二: string_util.py

"""
    字符串相关操作
"""


def string_reverse(str_arg):
    """
    字符串反转
    :param str_arg:
    :return: 反转字符串
    """
    return str_arg[::-1]


def string_sub(str_arg, start, end):
    """
    字符串截取 (从开始位 - 结束位 ) 包含选择位 [仅正序]
    :param str_arg: 传入字符串
    :param start: 开始位置(保留)
    :param end:   结束位置(保留)
    :return: 目标字符串
    """

    if start <= 0:
        start = 1

    if end <= 0:
        end = 1

    return str_arg[start - 1:end]


if __name__ == '__main__':
    print(string_sub("123456789", 2, 8))  # 2345678
    print(string_reverse("123456789"))  # 987654321

3.2.3 导入控制: init.py

__all__ = ["file_util", 'string_util']

3.2.4 业务导包及使用(核心)

"""
	业务代码功能实现
	@author pzy
	@description OK
	@version 1.0.0
"""
from case_utils import *

file_url = f"./case_utils/file/{input('请输入文件名称:')}.txt"

# 读取-测试异常抓取
file_util.read_file(file_url)

input_str = input("请输入需要操作的字符串: \n")
start_str = int(input("请输入需要截取的开始位置(包含): \n"))
end_str = int(input("请输入需要操作的结束位置(包含): \n"))

sub_str = string_util.string_sub(input_str, start_str, end_str)
print(f"截取后的字符串是{sub_str}")

sub_str = string_util.string_reverse(sub_str)
print(f"数字反转, 结果是: {sub_str}")

# 追加
file_util.additional_file(file_url, sub_str)
# 查询
file_util.read_file(file_url)

3.2.5 运行测试并查看效果(如图)

idea中效果 python文件夹没有变化
pycharm中是有文件夹效果区分的
在这里插入图片描述

4. 文章的总结与预告

4.1 本文总结

  • 异常捕获的时候 注意细节 最后面用exception接异常
  • 截取字符串注意条件判断
  • input输入的都是字符串类型 需要转换成int类型
  • 文件不存在自动补齐, 但文件夹不存在会一直报错(os操作)

4.2 下文预告

其他三方包的使用
如 pyecharts, apache-flink等



作者pingzhuyan 感谢观看

更多推荐

php外贸代购系统网站,淘宝代购系统,淘宝代购集运系统,海外代购系统

PHP外贸代购系统网站建设需要以下步骤:链接各大热门商城上的商品并自动获取参数,程序集成了淘宝、拍拍等大型热门商城抓取规则,可以直接一键代购上面的任何商品,自动获取相应的参数。确定网站功能,如:产品展示、在线购物、搜索引擎等。选择适合的数据库,例如MySQL、PostgreSQL等,存储网站的数据信息。根据目标用户的需

【leetcode 力扣刷题】栈—波兰式///逆波兰式相关知识和题目

波兰式、逆波兰式相关知识和题目波兰式、逆波兰式介绍常规表达式转换成逆波兰式==编程让常规表达式转换成逆波兰式==逆波兰式运算过程常规表达式转换成波兰式==编程让常规表达式转换成波兰式==波兰式运算过程150.逆波兰式表达式求值224.基本计算器227.基本计算器Ⅱ282.给表达式添加运算符波兰式、逆波兰式介绍我们常看到

计算机毕业设计 基于SpringBoot餐厅点餐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟————————————————计算机毕业设计题目《10

个人简历内容

简历个人信息专业技能熟悉Java基础,如集合、代理、反射等。了解Java多线程,了解JVM内存模型、常见GC算法、类加载机制。·#熟悉SSM+SpringBoot框架,熟悉AOP、IOC和SpringBoot自动配置原理,了解SpringMVC执行流程。熟悉MySQL数据库,熟悉InnoDB存储引擎、事务、MVCC机制

2023年云南省职业院校技能大赛中职组“网络安全”赛项样题

2023年云南省职业院校技能大赛中职组“网络安全”赛项样题一、竞赛时间总计:180分钟二、竞赛阶段竞赛阶段任务阶段竞赛任务竞赛时间分值A、B模块A-1登录安全加固180分钟200分A-2数据库加固A-3服务加固SSH\VSFTPDA-4防火墙策略B-1隐写术应用-B400分B-2内存取证B-3数据库渗透B-4Linux

信息检索与数据挖掘 | (二)布尔检索与倒排索引

文章目录📚词项-文档关联矩阵🐇相关名词🐇词项-文档关联矩阵的布尔查询处理📚倒排索引🐇关于索引🐇建立索引🐇基于倒排索引的布尔查询处理🐇查询优化📚字典数据结构🐇哈希表🐇各种树🐇B树vsB+树📚短语查询及含位置信息的倒排记录🐇二元词索引(Biwordindexes)🐇位置信息索引🐇混合索引机制

Hadoop学习总结(搭建Hadoop集群的安装准备)

目录一、安装jdk1、查看电脑中安装的jdk版本2、安装jdk173、配置path(配置jdk)4、对jdk8和jdk17版本做自由切换二、安装vmware三、安装centos7(虚拟机)四、虚拟机设置五、虚拟机网络配置1、查看NAT的网段2、修改主机名(1)修改虚拟机的hosts(2)修改虚拟机的hostname3、

Spring MVC 中的数据绑定和验证机制是什么,如何使用

在SpringMVC应用中,数据绑定和验证是非常重要的一部分,它们可以帮助我们将用户提交的数据绑定到Java对象上,并对数据进行验证,保证数据的正确性和可靠性。在SpringMVC中,数据绑定和验证机制都是通过注解来实现的。本文将介绍SpringMVC中的数据绑定和验证机制,以及如何使用它们。数据绑定数据绑定是将用户提

SSM整合(细节拉满)|将Mybatis、Spring、SpringMVC三个框架整合起来,通过一个demo来练习

环境要求环境:IDEAMySQL5.7.19Tomcat9Maven3.6要求:需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识;数据库环境创建一个存放书籍数据的数据库表,并插入一些示例数据SSM整合新建一个空的Maven项目导入相关依赖将数据库与IDEA连接起来把项目结构

解决Spring Boot 2.7.16 在服务器显示启动成功无法访问问题:从本地到服务器的部署坑

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

如何高效管理多个 Outlook 邮箱?

在我们日常工作和生活中,使用多个Outlook邮箱可以带来一定的便利和灵活性。本文将介绍多个Outlook邮箱的用途,以及如何注册多个Outlook邮箱并确保它们之间不关联。最后,我们将讨论管理多个Outlook邮箱所面临的困难,并介绍一个解决方案——VMLogin浏览器,可以高效管理多个账号并防止关联问题。一、多个O

热文推荐