python数据结构——文本编辑器(完整)

import os  # 导入操作系统模块

def create_file(filepath):  # 创建文件的函数
    """
    该函数用于创建文件

    参数:
    filepath - 文件路径

    返回值:
    如果创建成功,返回文件路径;否则,打印错误信息
    """
    if not os.path.exists(filepath):  # 如果文件路径不存在
        try:
            with open(filepath, 'w') as file:  # 以写入模式打开文件
                return filepath  # 返回文件路径
        except Exception as e:  # 捕获异常
            print(f'An error occurred:{e}')  # 打印错误信息
    else:
        return filepath  # 返回文件路径
        print('File already exists!')  # 这行代码不会被执行,因为已经返回

def read_file(filename):  # 读取文件的函数
    """
    该函数用于读取文件

    参数:
    filename - 文件名

    返回值:
    如果读取成功,返回文件内容;否则,打印相应的错误信息
    """
    try:
        with open(filename, 'r') as file:  # 以读取模式打开文件
            readStr = ''  # 初始化读取字符串
            for line in file:  # 遍历文件中的每一行
                readStr += line  # 将每行内容添加到读取字符串中
                readStr += '\r\n'  # 添加换行符
        return readStr  # 返回读取的字符串
    except FileNotFoundError:  # 捕获文件未找到异常
        print(f'文件{filename}不存在')  # 打印错误信息
    except PermissionError:  # 捕获权限不足异常
        print(f'没有读取{filename}的权限')  # 打印错误信息
    except Exception as e:  # 捕获其他未知异常
        print(f'发生未知的异常:{e}')  # 打印错误信息

def write_and_append_content(filename, new_content):
    """
    该函数用于向文件中写入和添加内容

    参数:
    filename - 文件名
    new_content - 要写入和添加的新内容

    返回值:
    将新内容和原来的内容拼接在一起并返回
    """
    try:
        # 读取原来的文件内容
        with open(filename, 'r') as file:
            origial_content = file.read()  # 写入新的内容并添加换行符
        with open(filename, 'a') as file:
            file.write('\n' + new_content)  # 将新内容和原来的内容拼接在一起并返回
        return origial_content + '\n' + new_content
    except Exception as e:
        print(f'发生错误{e}')
        return None

def insert_line(filename, line_number, content):
    """
    该函数用于向文件中插入一行内容

    参数:
    filename - 文件名
    line_number - 要插入的行号
    content - 要插入的内容

    返回值:
    更新后的行表
    """
    try:
        # 打开文件,读取所有行
        with open(filename, 'r') as file:
            lines = file.readlines()  # 检测行号是否有效
            if line_number < 1 or line_number > len(lines):
                print('lnvalid line number')
                return
            lines.insert(line_number - 1, content + '\n')  # 重新写入文件
        with open(filename, 'w') as file:
            file.writelines(lines)  # 更新行表
            line_table = []
            for i, line in enumerate(lines):
                line_table.append((i + 1, line.strip()))
                line_table.sort()  # 按行号从小到大排序
                # 如果行号大于当前最大行号
            if line_number > len(line_table):
                for i in range(line_number - len(line_table), line_number):
                    line_table.append((i + 1, ''))  # 初始化空白行信息
            else:
                line_table = line_table[:line_number] + line_table[line_number:line_number + 1] + line_table[line_number + 1:]
                line_table[line_number - 1] = (line_number, content)  # 更新行的信息
                return line_table
    except FileNotFoundError:
        print(f'文件{filename}不存在')
    except PermissionError:
        print(f'没有读取{filename}的权限')
    except Exception as e:
        print(f'发生未知的异常:{e}')

def rename_file(old_name, new_name):
    """
    该函数用于重命名文件

    参数:
    old_name - 原文件名
    new_name - 新文件名

    返回值:
    无
    """
    try:
        os.rename(old_name, new_name)
        print(f'文件{old_name}已成功重命名为{new_name}')
    except FileNotFoundError:
        print(f'文件{old_name}不存在')
    except PermissionError:
        print(f'没有权限重命名{old_name}')
    except Exception as e:
        print(f'发生未知的错误:{e}')

if __name__ == '__main__':  # 当模块被直接运行时执行以下代码
    filename = create_file('张三.txt')  # 创建文件并获取文件名
    write_and_append_content(filename, 'abc')
    write_and_append_content(filename, 'def')
    insert_line('example.txt', 3, 'hello')
    result = read_file(filename)  # 读取文件内容
    print(result)  # 打印文件内容
    rename_file('example.txt', 'text.txt')

需要注意的是:

要在创建的文本中写上要输出的内容

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值