python - 试图确定文件是否已被 uuencoded

标签 python uuencode uudecode

我正在尝试处理大量 txt 文件,这些文件本身是我要处理的实际文件的容器。 txt 文件有 sgml 标签,为我正在处理的单个文件设置边界。有时,包含的文件是经过 uu 编码的二进制文件。我已经解决了解码 uuencoded 文件的问题,但是当我仔细考虑我的解决方案时,我确定它不够通用。也就是我一直在用

if '\nbegin 644 ' in document['document']

测试文件是否经过 uuencoded。我做了一些搜索,对 644 的含义(文件权限)有一个模糊的理解,然后找到了其他可能有 uuencoded 文件的示例

if '\nbegin 642 ' in document['document']

甚至其他一些替代品。因此,我的问题是如何确保捕获/识别所有具有 uuencoded 文件的子容器。

一个解决方案是测试每个子容器:

uudecode=codecs.getdecoder("uu")

for document in documents:
    try:
        decoded_document,m=uudecode(document)
    except ValueError:
         decoded_document=''
    if len(decoded_document)==0
        more stuff

这并不可怕,cpu 周期很便宜,但我要处理大约 800 万份文档。

因此,是否有更稳健的方法来识别特定字符串是否是 uuencoding 的结果?

最佳答案

Wikipedia says每个 uuencoded 文件都以此行开头

begin <perm> <name>

所以可能匹配正则表达式 ^begin [0-7]{3} (.*)$ 的行足够可靠地表示开头。

关于python - 试图确定文件是否已被 uuencoded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4662903/

相关文章:

python - 如何在 python 中从 groupby pandas 中提取向量

python - 在列表列表中附加列表

python - 从平面文件中解析出数据

linux - 将日期添加到 mysqldump 命令

python - 如何有效地获取 Pandas DataFrame 中行之间的日志变化率?

java - Java 是否有任何标准的 uudecoding 机制?

java - Java 有 uudecoding 的标准机制吗?

javascript - javascript中的uudecode算法

python - 我们如何找出某些 uuencoded 文件无法使用 Python 正确解码的原因?