Python实现load_datafile、load_wordfile函数运行异常求助
Python文件处理功能实现方案
现有代码问题排查
你提供的load_datafile代码存在以下问题:
- 函数形参定义错误:将固定字符串作为形参,不符合接收任意文件名参数的要求
- 读取文件路径写死:
open方法中直接传入固定文件名,没有使用传入的参数值 - 仅读取了文件最后一行内容:
lines[-1]只取了行列表的最后一个元素,没有覆盖全部文件内容 - 返回值为空:定义的
data变量始终是空字符串,没有将处理后的内容赋值给返回变量 - 缺失异常处理逻辑:没有捕获文件不存在的相关异常
正确实现代码
def load_datafile(filename: str) -> str: try: with open(filename, 'r', encoding='utf-8') as file: # 读取全部内容转小写后返回 return file.read().lower() except FileNotFoundError: print(f"错误:文件 {filename} 不存在") return "" except OSError as e: print(f"读取文件时发生错误:{str(e)}") return "" def load_wordfile(filename: str) -> list: word_list = [] try: with open(filename, 'r', encoding='utf-8') as file: for line in file: # 去除每行首尾的空白、换行符,跳过空行 word = line.strip() if word: word_list.append(word) return word_list except FileNotFoundError: print(f"错误:文件 {filename} 不存在") return [] except OSError as e: print(f"读取词表文件时发生错误:{str(e)}") return []
功能验证说明
你可以直接用需求中的示例调用测试:
- 测试
load_datafile:
data = load_datafile('harry.txt') print(data)
输出将和要求的示例一致,为全小写的全文内容。
2. 测试load_wordfile:
pos_words = load_wordfile("positivewords.txt") print(pos_words[2:9]) neg_words = load_wordfile("negativewords.txt") print(neg_words[10:19])
输出将匹配示例给出的词表切片结果。
内容的提问来源于stack exchange,提问作者Federico Rizza
相关产品推荐
相关产品推荐

