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


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 感谢观看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pingzhuyan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值