• Python基础入门篇【44】--文件读写实例:读取一个文件,并将其中的内容写入到创建的包里


    前言
    作者简介:短尾巴小鳄鱼 ,一位不放弃自己的上进卷妹
    💬 如果文章知识点有错误的地方,请留言指正~和大家一起学习,一起进步
    💬 人生格言:昨日种种,皆成今我。今日种种,方成新我。切莫踌躇,莫停留,莫沉溺💬
    如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦

    python中文件的创建与读写

    实例-利用文件读写创建一个包

    任务

    1. 读取一个文件,并去除文件中每行数据的首尾空格及空字符串
    2. 利用文件读写创建一个包(如果包已创建则抛出异常),并且将读取到的内容写入到包的__init__.py文件,并且自动加入换行符

    代码:

    # coding:utf-8
    
    import os
    
    
    class CreatePackage(object):
        def __init__(self, path, mode='w', is_return=True):  # 自动换行默认为真
            self.path = path
            self.mode = mode
            self.is_return = is_return
    
        def creat(self, message):
            if os.path.exists(self.path):  # 判断这个路径是否存在,不存在则抛自定义异常
                raise Exception('%s已经存在不可创建' % self.path)
            os.makedirs(self.path)  # 创建文件夹
    
            init_path = os.path.join(self.path, '__init__.py')  # 定义一个路径__init__.py(包中必须含的文件)
            try:
                f = open(init_path, self.mode)
                if self.is_return:  # 判断是否需要自动换行,是的话则将写入的内容拼接\n
                    for temp in message:
                        if not temp.endswith('\n'):  # 二次判断传入的message的结尾是否已经包含换行符
                            temp = '%s\n' % temp
                            f.write(temp)  # 写入(w模式没有文件会创建文件然后写入)
            except Exception as e:
                return e
            finally:
                f.close()  # 将close写在finally中,无论在写的过程中是否出现异常,都会调用close函数关闭文件
    
    
        def read_pacakge(self, is_strip=True):
            with open(self.path, self.mode, encoding='utf-8') as f:
                data = f.readlines()
                result = []
                for temp in data:
                    if is_strip:
                        temp = temp.strip()
                        if temp != '':
                            result.append(temp)
    
            return result
    
    
    if __name__ == '__main__':
        read_test1 = CreatePackage(path='time_test.py', mode='r')
        resultdata = read_test1.read_pacakge()
        current_path = os.getcwd()
        path = os.path.join(current_path, 'test1')
        package_1 = CreatePackage(path=path)
        package_1.creat(resultdata)   # 将读取的内容传入
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    运行之后,会创建一个包,并在__init__.py文件中写入处理后的读取内容。

    读取时处理:去除了读取到的内容的首位空格及空字符串

    写入时处理:每行自动添加换行符(如果已有换行符则无需添加)

    读取的文件:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AnzlZnWp-1660191318752)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220811120341028.png)]

    写入的文件:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JoFJqyCd-1660191318753)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220811120435582.png)]

  • 相关阅读:
    CentOS更新镜像源
    系列八、堆(Heap)
    第十四届蓝桥杯(Web应用开发)模拟赛1期-大学组
    《Maven入门基础》
    6183. 字符串的前缀分数和(每日一难phase2--day18)
    基于Java+微信小程序实现《校园水电费管理平台》
    基于javaweb的个人博客系统(前后端分离+java+vue+springboot+ssm+mysql+redis)
    软件设计模式白话文系列(七)适配器模式
    POI导出excel,按照父子节点进行分级显示
    等参单元与数值积分
  • 原文地址:https://blog.csdn.net/weixin_44629511/article/details/126282859