You need to enable JavaScript to run this app. Python编写get_translations_from_file调用get_translations解析双语文件
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 22:27:03