尝试确定文件是否已被uuencoded

2024-05-19 00:02:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试处理大量的txt文件,这些文件本身就是我要处理的实际文件的容器。txt文件有sgml标记,为我正在处理的各个文件设置边界。有时,包含的文件是uuencoded的二进制文件。我已经解决了解码uuecoded文件的问题,但当我仔细考虑我的解决方案时,我发现它不够普遍。也就是说,我一直在使用

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

测试文件是否为uEncoded。我做了一些搜索,对644意味着什么(文件权限)有一个模糊的理解,然后找到了一些uuencoded文件的例子

^{pr2}$

或者其他的替代品。因此,我的问题是如何确保捕获/标识具有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的结果?在


Tags: 文件in标记txtif二进制解决方案解码
2条回答

两种方式:

(1)在基于Unix的系统上,可以可靠地使用file命令。在

{a1}

$ file foo
foo: uuencoded or xxencoded text

(2)我还发现了下面的(未测试的)Python代码,看起来它可以做你想做的事情(在http://ubuntuforums.org/archive/index.php/t-1304548.html)。在

^{pr2}$

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

begin <perm> <name>

因此,与regexp ^begin [0-7]{3} (.*)$匹配的行可能足够可靠地表示开始。在

相关问题 更多 >

    热门问题