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

相关推荐
码界奇点18 分钟前
Python Flask文件处理与异常处理实战指南
开发语言·python·自然语言处理·flask·python3.11
浠寒AI24 分钟前
智能体模式篇(上)- 深入 ReAct:LangGraph构建能自主思考与行动的 AI
人工智能·python
行云流水剑2 小时前
【学习记录】如何使用 Python 提取 PDF 文件中的内容
python·学习·pdf
心扬2 小时前
python生成器
开发语言·python
mouseliu2 小时前
python之二:docker部署项目
前端·python
狂小虎3 小时前
亲测解决self.transform is not exist
python·深度学习
Python智慧行囊3 小时前
Python 中 Django 中间件:原理、方法与实战应用
python·中间件·架构·django·开发
深科文库3 小时前
构建 MCP 服务器:第 3 部分 — 添加提示
服务器·python·chatgpt·langchain·prompt·aigc·agi
蓝婷儿3 小时前
6个月Python学习计划 Day 17 - 继承、多态与魔术方法
开发语言·python·学习