我正在嘗試處理大量的txt文件,這些文件本身就是我想要處理的實際文件的容器。 txt文件具有sgml標籤,爲我正在處理的各個文件設置邊界。有時,包含的文件是二進制的,已經被編碼。我已經解決了解碼uuencoded文件的問題,但是當我在研究我的解決方案時,我確定它不夠通用。也就是說,我一直在使用試圖確定文件是否已被編碼
if '\nbegin 644 ' in document['document']
來測試該文件是否是uuencoded。我做了一些搜索,並有644個單元(文件權限)什麼是模糊的認識,並隨後發現,可能有
if '\nbegin 642 ' in document['document']
,甚至一些其他的候補的無編碼文件的其他例子。因此,我的問題是如何確保捕獲/識別所有具有未編碼文件的子容器。
解決辦法之一是測試每個子容器:
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的結果?
謝謝,我在windows – PyNEwbie 2011-01-11 21:44:35
除了開始之前有內容的文件 - 大多數uudecoders會跳過。 '文件'可能會將這些文件報告爲Ascii Text。不要介意你在Windows上,得到Cygwin,然後你可以擁有所有Unix的好東西。 – Spacedman 2011-01-12 15:02:05