经典题型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!
关键点说明:
-
转换方法:
-
upper()
:全大写(如 "HELLO") -
lower()
:全小写(如 "hello") -
swapcase()
:大小写互换(如 "hELLO")
-
-
文件操作:
-
使用
with open(...)
自动管理文件关闭 -
encoding='utf-8'
确保兼容中文及特殊字符 -
模式
'w'
会覆盖原文件内容,如需追加请改用'a'
-
-
扩展性:
-
可添加循环处理多行文本
-
可增加异常处理(如文件路径错误)
-
(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 osfilename = 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()
功能说明
-
输入处理:
-
支持同时输入多个文件名(用空格分隔)
-
自动处理无效文件名并给出警告
-
示例输入:
file1.txt file2.txt file3.txt
-
-
核心处理:
-
自动去除空行和前后空格
-
默认进行 去重排序(如需保留重复项,注释
set()
部分) -
按字母顺序排序(区分大小写,大写字母在前)
-
-
输出功能:
-
将结果写入指定输出文件
-
显示合并统计信息
-
预览前10行内容
-