【发布时间】:2011-06-07 11:13:33
【问题描述】:
我正在尝试处理大量 txt 文件,这些文件本身就是我要处理的实际文件的容器。 txt 文件具有 sgml 标记,这些标记为我正在处理的各个文件设置边界。有时,包含的文件是经过 uuencoded 的二进制文件。我已经解决了解码 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 的结果?
【问题讨论】: