Python文本文件导入与数值处理问题求助:读取并修改数值后保存
解决分数文件处理问题
原代码的核心问题
- 分隔符错误:你的文件里名字和分数是用空格分隔的,但代码里用了
split(','),导致每一行都被当成一个整体,没法拆分出单独的分数。 - 缩进逻辑混乱:
g = list(map(convert_numbers, scrSep))缩进在convert_numbers函数内部,根本不会被执行到,而且map的用法也不对——scrSep是二维列表,直接传进去会把整个子列表传给函数,而不是单个元素。 - 缺少关键操作:没有对分数执行加5的计算,也没有把结果写入新文件的逻辑。
修正后的完整代码
# 用with语句自动管理文件,不用手动close with open('class_scores.txt', 'r') as infile, open('scores2.txt', 'w') as outfile: for line in infile: # 先清掉行首尾的空白,再按空白拆分(兼容多个空格的情况) line_parts = line.strip().split() # 跳过格式不对的行 if len(line_parts) != 2: continue name, score_text = line_parts # 转整数、加5、写入新文件 try: original_score = int(score_text) new_score = original_score + 5 outfile.write(f"{name} {new_score}\n") except ValueError: # 如果分数不是数字,跳过该行 continue
关键细节说明
with语句:自动处理文件的打开和关闭,避免忘记close导致的资源泄漏,是Python操作文件的最佳实践。split()无参数:默认会按任意空白字符(空格、制表符、换行符等)拆分,比split(' ')更灵活,能处理行内多个空格的情况。- 异常处理:防止文件中出现非整数的分数(比如写错的字符)导致程序崩溃,直接跳过这类异常行即可。
- 逐行处理:不需要把整个文件加载到内存,就算文件很大也能高效处理。
内容的提问来源于stack exchange,提问作者Lazulily
相关产品推荐
相关产品推荐

