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

全文目录,一步到位

  • 1.前言简介
    • [1.1 专栏传送门](#1.1 专栏传送门)
  • [2. 前文知识梳理](#2. 前文知识梳理)
  • [3. 前文总结案例](#3. 前文总结案例)
    • [3.1 案例介绍](#3.1 案例介绍)
    • [3.2 代码实现](#3.2 代码实现)
      • [3.2.1 工具包一: file_util.py](#3.2.1 工具包一: file_util.py)
      • [3.2.2 工具包二: string_util.py](#3.2.2 工具包二: string_util.py)
      • [3.2.3 导入控制: init.py](#3.2.3 导入控制: init.py)
      • [3.2.4 业务导包及使用(核心)](#3.2.4 业务导包及使用(核心))
      • [3.2.5 运行测试并查看效果(如图)](#3.2.5 运行测试并查看效果(如图))
  • [4. 文章的总结与预告](#4. 文章的总结与预告)
    • [4.1 本文总结](#4.1 本文总结)
    • [4.2 下文预告](#4.2 下文预告)

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

python 复制代码
"""
    文件相关操作
"""


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

python 复制代码
"""
    字符串相关操作
"""


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

python 复制代码
__all__ = ["file_util", 'string_util']

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

python 复制代码
"""
	业务代码功能实现
	@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 感谢观看

相关推荐
【 】42317 分钟前
pyhon相对导入
开发语言·python
西门大盗33 分钟前
pycharm自动进行python 测试(python test)
ide·python·pycharm
Jmayday1 小时前
Pytorch:张量的操作
人工智能·pytorch·python
石榴树下的七彩鱼1 小时前
智能抠图 API 多语言接入实战:从零到上线的 Python / Java / PHP / JS 完整教程(附避坑指南)
java·python·php·智能抠图·api接入·石榴智能·shiliuai
Captain_Data1 小时前
AI 12小时设计CPU完整解析:从219字到RISC-V内核的技术突破
人工智能·python·ai·大模型·芯片设计·risc-v
小鱼~~2 小时前
最小二乘&均方误差MSE&平均绝对误差MAE
python·算法·机器学习
Jmayday2 小时前
Pytorch:模型线性回归
pytorch·python·线性回归
执于代码2 小时前
python 环境知多少
开发语言·python
itzixiao2 小时前
L1-054 福到了(15 分)[java][python]
java·python·算法
斯维赤2 小时前
Python学习超简单第十一弹:邮件发送
开发语言·python·学习