请求分析words_from_file函数的功能实现正确性
代码问题分析与修正
你的代码存在几个关键问题,导致无法实现“读取文件并将每个单词逐行写入另一个文件”的需求:
- 文件打开逻辑错误:每次循环读取原文件的一行时,都用
'w'模式打开目标文件,这会清空目标文件的原有内容,最终目标文件只会保留原文件最后一行的处理结果。应该把目标文件的打开操作放在外层循环之外,避免重复打开清空。 - 单词分割逻辑错误:
for word in lines是逐个遍历字符串的字符,而非按单词分割。要提取每行的单词,应该用lines.split()方法,它会按空白字符分割出每行的所有单词。 - 写入方法使用不当:
writelines()用于写入多个字符串组成的序列,单个单词用write()更合适;另外要实现每个单词逐行写入,需要在每个单词后添加换行符'\n'。 - 异常捕获过于宽泛:
except:会捕获所有异常,包括语法错误、权限错误等,不利于排查问题,应该捕获特定的FileNotFoundError,同时保留通用异常处理来捕获其他意外情况。
修正后的代码
def words_from_file(filename1, filename2): try: # 同时打开原文件和目标文件,目标文件仅打开一次 with open(filename1, 'r') as f, open(filename2, 'w') as g: for line in f: # 按空白字符分割每行的单词 words = line.split() for word in words: # 每个单词后添加换行符并写入 g.write(word + '\n') except FileNotFoundError: print("Error: 文件未找到") except Exception as e: print(f"发生未知错误: {e}")
内容的提问来源于stack exchange,提问作者cosygod
相关产品推荐
相关产品推荐

