Python编写get_translations_from_file调用get_translations解析双语文件
问题根因
- 自写的
get_translations_from_file函数没有将内部调用get_translations得到的解析结果向外返回,函数默认返回None,导致后续遍历返回值时完全拿不到翻译元组数据。 - 手动打开文件后没有主动释放文件句柄,存在资源泄漏风险,运行异常时可能触发文件锁无法释放的问题。
- Windows系统环境下不指定文件编码读取时,碰到毛利文这类带特殊变音符号的字符,容易出现乱码。
可运行的修复实现
直接修改get_translations_from_file函数,不需要改动原有已经写好的翻译解析逻辑:
def get_translations_from_file(filename): """读取指定文件内容,复用翻译解析逻辑返回对应翻译元组列表""" # 用with上下文管理器自动处理文件关闭,指定utf-8编码避免特殊字符乱码 with open(filename, 'r', encoding='utf-8') as f: file_content = f.read() # 直接返回原解析函数的处理结果 return get_translations(file_content)
改动说明
- 采用
with语法操作文件,无论读取过程是正常结束还是抛出异常,都会自动触发文件关闭,无需手动编写close逻辑。 - 读取文件时显式指定
utf-8编码,适配文件中带变音符号的毛利语字符,避免跨平台读取乱码。 - 补上返回值逻辑,将原翻译解析函数的输出直接传递给调用方,解决之前函数返回空值的问题。
运行预期效果
执行测试代码后,会逐行输出所有双语地名的元组,和解析逻辑预期完全一致:
('New Zealand', 'Aotearoa') ('North Island', 'Te Ika-a-Māui') ('South Island', 'Te Waipounamu') ('Wellington', 'Te Whanganui a Tara') ('Christchurch', 'Ōtautahi') ('Hamilton', 'Kirikiriroa') ('Auckland', 'Tāmaki Makaurau')
内容的提问来源于stack exchange,提问作者John adams
相关产品推荐
相关产品推荐

