经典题型02——python

文件操作与综合应用

1、文件读写

(1)基础转换并写入(覆盖模式)

def case_conversion_write():
    # 读取输入
    text = input("请输入要转换的字符串: ")
    filename = input("请输入保存文件名(如 output.txt): ")
    
    # 选择转换方式
    print("\n选择转换方式:")
    print("1. 全大写  2. 全小写  3. 大小写互换")
    choice = input("请输入选项 (1/2/3): ")
    
    # 处理转换
    if choice == '1':
        processed = text.upper()
    elif choice == '2':
        processed = text.lower()
    elif choice == '3':
        processed = text.swapcase()  # 自动反转大小写
    else:
        print("无效选项,默认保存原文本")
        processed = text
    
    # 写入文件
    with open(filename, 'w', encoding='utf-8') as f:
        f.write(processed)
    print(f"已保存到文件: {filename}")

# 示例用法
case_conversion_write()

(2)手动实现大小写互换(底层原理)

def manual_swapcase(text):
    result = []
    for char in text:
        if char.islower():
            result.append(char.upper())
        elif char.isupper():
            result.append(char.lower())
        else:
            result.append(char)  # 非字母字符保留
    return ''.join(result)

# 文件写入部分同上(替换 swapcase() 为 manual_swapcase(text) 即可)

示例输入输出:

输入字符串: Hello Python 3.11!
选择转换方式 3(大小写互换)

输出文件内容:
hELLO pYTHON 3.11!

关键点说明:

  1. 转换方法

    • upper():全大写(如 "HELLO")

    • lower():全小写(如 "hello")

    • swapcase():大小写互换(如 "hELLO")

  2. 文件操作

    • 使用 with open(...) 自动管理文件关闭

    • encoding='utf-8' 确保兼容中文及特殊字符

    • 模式 'w' 会覆盖原文件内容,如需追加请改用 'a'

  3. 扩展性

    • 可添加循环处理多行文本

    • 可增加异常处理(如文件路径错误)

(3)文件内容验证代码

def read_file_content(filename):
    with open(filename, 'r', encoding='utf-8') as f:
        return f.read()

print("文件实际内容:", read_file_content("output.txt"))

(4)进阶需求

如需保留原始文件并创建新文件,可修改保存逻辑:

import os

filename = input("请输入文件名: ")
base, ext = os.path.splitext(filename)
new_filename = f"{base}_converted{ext}"  # 生成新文件名(如 input_converted.txt)

with open(new_filename, 'w', encoding='utf-8') as f:
    f.write(processed)

2、合并文件内容

def merge_and_sort_files():
    # 获取文件列表
    input_files = input("请输入要合并的文件名(用空格分隔): ").split()
    output_file = input("请输入合并后的输出文件名(如 merged.txt): ")
    
    all_lines = []
    
    # 循环读取每个文件
    for filename in input_files:
        try:
            with open(filename, 'r', encoding='utf-8') as f:
                lines = f.readlines()
                all_lines.extend([line.strip() for line in lines if line.strip()])
        except FileNotFoundError:
            print(f"警告:文件 {filename} 不存在,已跳过")
        except Exception as e:
            print(f"读取 {filename} 时发生错误: {str(e)}")
    
    # 去重并按字母顺序排序
    sorted_lines = sorted(list(set(all_lines)))  # 去重排序
    # sorted_lines = sorted(all_lines)  # 保留重复项
    
    # 写入结果文件
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write('\n'.join(sorted_lines))
    
    # 打印结果到屏幕
    print(f"\n合并完成!共合并 {len(input_files)} 个文件,生成 {len(sorted_lines)} 行")
    print("前10行预览:")
    print('\n'.join(sorted_lines[:10]))

# 示例用法
if __name__ == "__main__":
    merge_and_sort_files()

功能说明

  1. 输入处理

    • 支持同时输入多个文件名(用空格分隔)

    • 自动处理无效文件名并给出警告

    • 示例输入:file1.txt file2.txt file3.txt

  2. 核心处理

    • 自动去除空行和前后空格

    • 默认进行 去重排序(如需保留重复项,注释 set() 部分)

    • 按字母顺序排序(区分大小写,大写字母在前)

  3. 输出功能

    • 将结果写入指定输出文件

    • 显示合并统计信息

    • 预览前10行内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值