【问题标题】:How can I open .ebc (ebcdic) file on my laptop via python?如何通过 python 在我的笔记本电脑上打开 .ebc (ebcdic) 文件?
【发布时间】:2019-10-04 14:26:16
【问题描述】:

UPD I have opened file and found this format. How I can decode 00000000....

我需要在 Python 上打开 .ebc 文件。该文件的大小约为 12GB。

我为此操作使用了大量工具和 Python 库,但很明显我做错了事。我找不到合适的编码。

由于文件大小,我尝试逐行读取文件。

【问题讨论】:

    标签: python database file utf-8 decoding


    【解决方案1】:

    Python lists EBCDIC 的两个代码页,“cp424”(希伯来语)和“cp500”(西方脚本)。

    像这样使用它:

    with open(path, encoding='cp500') as f:
        for line in f:
            # process one line of text
    

    注意:如果文件大小为 12G,您需要避免调用 f.read()f.readlines(),因为两者都会将整个文件读入内存。 在笔记本电脑上,这可能会冻结您的系统。 相反,使用 Python 的默认行迭代逐行迭代内容。

    如果您只想使用现代编码重新编码文件,例如。非常流行的 UTF-8,使用以下模式:

    with open(in_path, encoding='cp500') as src, open(out_path, 'w', encoding='utf8') as dest:
        dest.writelines(src)
    

    这应该使用低内存占用重新编码文件,因为它逐行读取、转换和写入内容。

    【讨论】:

    • 看起来 'cp037' 和 'cp273' 也是基于 EBCDIC 的,尽管链接表没有提到这一点。如果你的文件源没有告诉你到底是用什么代码页来编码的,你可能需要做一些试验和错误。
    • 我打开了文件,发现很多00000000000(我的问题中的图片)。可理解信息的份额非常小。也许我可以进行另一个解码操作? @lenz
    • 看来下一步是解析格式。从图片中我可以看出,0 的运行实际上是数字“0”的重复出现,而不是空字节或类似的东西,所以这里没有额外的解码步骤是合适的。但是您似乎还没有找到正确的编解码器;你仍然有一些盒子和奇怪的“æ”字符。
    • 真的没有关于文件格式的文档吗?
    • 关于“æ”字符:很可能没有正确解释这一点的现有编解码器。在使用 EBCDIC 时,人们可能只是临时重新映射了字符:“我们不需要 'æ',让我们将此代码点用于字符集中缺少的其他字符。”如果没有文档,您将不得不猜测实际应该存在什么并执行一些str.replace() 操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 2017-06-20
    • 2017-01-15
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多