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

猜你喜欢

转载自blog.csdn.net/pingzhuyan/article/details/132977870