文件操作与综合应用
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 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()
功能说明
-
输入处理:
-
支持同时输入多个文件名(用空格分隔)
-
自动处理无效文件名并给出警告
-
示例输入:
file1.txt file2.txt file3.txt
-
-
核心处理:
-
自动去除空行和前后空格
-
默认进行 去重排序(如需保留重复项,注释
set()
部分) -
按字母顺序排序(区分大小写,大写字母在前)
-
-
输出功能:
-
将结果写入指定输出文件
-
显示合并统计信息
-
预览前10行内容
-