You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyx12库读取X12文件报错invalid mode: 'U',求解决方案

解决pyx12解析X12文件时"invalid mode: 'U'"的错误

问题根源

Python 3已移除废弃的文件打开模式'U'(通用换行模式),而旧版本pyx12的X12Reader默认使用该模式打开文件,导致报错。

解决方案

方案1:手动打开文件后传入文件对象

绕开X12Reader内部的文件打开逻辑,自己用Python 3兼容的模式打开文件,再将文件对象传给X12Reader:

修改后的代码:

import pyx12.x12file
import os

src_file = source_file_name

try:
    if not os.path.isfile(src_file):
        print('Could not open file "%s"' % (src_file))
        exit()  # 补充括号执行退出操作
    # 用Python3兼容的'r'模式打开文件,替代X12Reader内部的打开逻辑
    with open(src_file, 'r') as f:
        src = pyx12.x12file.X12Reader(f)
        for seg in src:
            if seg.get_seg_id() == 'ST':
                print(seg)
                print(seg.get_value('ST03'))

except pyx12.errors.X12Error:
    print('"%s" does not look like an X12 data file' % (src_file))
except Exception as E:
    print(E)

方案2:升级pyx12到最新版本

如果项目允许,直接升级pyx12库,新版本大概率已修复模式'U'的兼容性问题:

pip install --upgrade pyx12

补充说明

X12Reader的构造函数支持直接接收已打开的文件对象,因此方案1无需修改库源码即可解决问题。原代码中的exit未加括号,仅为函数引用,不会实际执行退出操作,已在修改后的代码中修正。

内容的提问来源于stack exchange,提问作者Codebull

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:52:19