Python统计文件指定字符出现次数并写入新目录txt文件
需求说明
- 统计
characters.txt文件前200个字符范围内,小写字母a的出现次数 - 最终统计结果需要保存到新建文件夹下的txt文件中
示例:如果
characters.txt文件内容为abcdefghijklmnopqerstuvwxzy,统计字母g的出现次数为1,就需要把结果1存入对应文件夹下的file.txt文件。
原参考代码的问题
给出的参考代码存在多处逻辑和语法错误,无法直接运行得到正确结果,具体问题如下:
- 缺少
os模块导入语句,无法调用创建文件夹的相关方法 - 读取文件时没有做长度限制,会读取整个文件的全部内容,不符合“只统计前200个字符”的要求
- 没有明确指定读取的源文件为
characters.txt、统计目标字符为a - 创建文件夹后,结果文件的保存路径没有指向新建文件夹,会直接生成在当前运行目录
write()方法只接受字符串类型参数,直接传入整数类型的统计值会触发类型报错- 文件关闭语句缺少调用括号,没有实际执行关闭操作,且源文件读取完成后也没有做关闭处理,容易引发资源泄漏
可直接运行的正确实现
import os # 读取源文件的前200个字符 with open("characters.txt", "r", encoding="utf-8") as source_file: target_content = source_file.read(200) # 统计字符a的出现次数 a_count = 0 for char in target_content: if char == "a": a_count += 1 # 新建存储结果的文件夹,判断文件夹是否存在避免重复创建报错 if not os.path.exists("result_dir"): os.mkdir("result_dir") # 将统计结果写入新文件夹下的txt文件 with open("result_dir/result.txt", "w", encoding="utf-8") as res_file: res_file.write(str(a_count))
代码说明:
- 用
with上下文管理器处理文件读写,会自动完成文件关闭操作,不需要手动调用close() read(200)会直接读取文件开头的200个字符,不需要额外做切片处理- 写入结果前将整数类型的统计值转为字符串,避免类型错误
- 创建文件夹前先做存在性判断,避免文件夹已存在时触发运行错误
内容的提问来源于stack exchange,提问作者Lucxgjs
相关产品推荐
相关产品推荐

