读取大型机EBCDIC文件
我有一个用EBCDIC编码的主机文件,需要把它转换成ASCII格式。我可以用哪些库或工具来实现这个转换呢?我对Python比较熟悉。
我收到的文件里有一本说明书,可以用来解析这个文件(下面是其中的一部分)。
类型'C'、'P'和'B'分别是什么意思呢?我猜'C'代表字符,'B'代表字节,'P'代表压缩数字?
1:----------------------------------------------------------------------------------------------------------------------------------:
:LAYOUT NAME: B224E DATE: 02/20/14 PAGE 7 OF 14:
: ------- -------- --- ---:
:COBOL: PAN-NAME: NONE COPYLIB-NAME: RECB224E :
: -------------------- -------------------- :
:BAL : PAN-NAME: NONE COPYLIB-NAME: NONE :
:------------------------------------------------------------------------------:
:TYPE OF RECORD: EXTENDED SORT KEY AREA - SEGMENT "A" (OPTIONAL) :
:------------------------------------------------------------------------------:
:POSITION : LENGTH : TYPE : DESCRIPTION :
:----------:--------:------:---------------------------------------------------:
: : : : :
: : : : :
: : : : :
:001 - 001 : 1 : C : SEGMENT IDENTIFIER - "A" :
: : : : :
:002 - 003 : 2 : P : SEGMENT LENGTH :
: : : : :
:004 - ??? : ??? : C : EXTENDED SORT KEY AREA :
: : : : :
1 个回答
6
看看这个codecs
模块。从标准编码表上看,EBCDIC也被称为cp-500
。你可以试试下面这样的代码:
import codecs
with open("EBCDIC.txt", "rb") as ebcdic:
ascii_txt = codecs.decode(ebcdic.read(), "cp500")
print(ascii_txt)
正如mpez0在评论中提到的,如果你使用的是Python 3,可以把代码简化成这样:
with open("EBCDIC.txt", "rt", "cp500") as ebcdic:
print(ebcdic.read())
我手头没有EBCDIC文件,所以没法测试这个,但这应该能帮你入门。