我正在嘗試解析某些.txt文件。這些文件充當可變數量的「兒童」文件的容器,這些文件在容器中用SGML標籤設置或識別。用python我可以很容易地分開兒童文件。但是,我無法將二進制內容作爲二進制文件(例如gif或jpg)寫回。在最簡單的情況下,容器可能有一個嵌入式html文件,後面跟着一個由html調用的圖形。我假設我的問題是因爲我正在使用open(filename,'r')讀取原始.txt文件。但這似乎是找到sgml標籤來分割文件的唯一選擇。如何將內容與作爲二進制和其他形式內容的容器的文件分開
我將不勝感激任何幫助,以確定一些相關的閱讀材料。
我很欣賞這些建議,但我仍然在努力解決最基本的問題。例如,當我打開該文件與寫字板和向下滾動到標記爲GIF我看到的部分:
<FILENAME>h65803h6580301.gif
<DESCRIPTION>GRAPHIC
<TEXT>
begin 644 h65803h6580301.gif
M1TE&.#EA(P)I`[email protected]`("`@,#`P$!`0+^_OW]_?_#P\*"@H.#@X-#0T&[email protected]!`0
M$+"PL"`@('!P<)"0D#`P,%!04#\_/^_O[Y^?GZ^OK]_?WX^/C\_/SV]O;U]?
我能應付找到部分很輕鬆了,但哪裏的gif文件開始。標題是否以644開頭,單詞開頭之後的空白還是以MITE開頭的行?
接下來,當文件被讀入python中時,它是否對二進制代碼做任何事情,當它被讀出時必須被撤銷?
我能找到其中的圖形開頭的行:
filerefbin=file('myfile.txt','rb')
wholeFile=filerefbin.read()
import re
graphicReg=re.compile('<DESCRIPTION>GRAPHIC')
locationGraphics=graphicReg.finditer(wholeFile)
graphicsTags=[]
for match in locationGraphics:
graphicsTags.append(match.span())
我可以很容易地使用相同的過程來獲得這個詞開始,或者識別的文件名,並獲得在該文件名的末尾'第一行。我也成功地獲得了嵌入式gif文件的結尾。但是我似乎無法寫出正確的組合,所以當我雙擊h65803h6580301.gif並將其隔離並保存時,我就可以看到圖形。
有趣的是,當我在rb中打開文件時,即使它們在notebpad中似乎沒有任何效果,但行尾仍然存在。所以這顯然是我的一個問題,我可能需要改成readlines和剝出\ n
我喜歡這個網站後加入行在一起,我愛PYTHON
這太容易,一旦我讀bendin的職位。我不得不剪斷以單詞開始開始部分,並保存在一個txt文件,然後運行以下命令:
import uu
uu.decode(r'c:\test2.txt',r'c:\test.gif')
我有一些其他的東西,工作了一天,但我的休息當我更仔細地看這個時,我會在這裏發表更多的內容。我需要發現的第一件事是如何使用文件以外的內容,這是因爲我將整個.txt文件讀入內存,並刪除了具有需要使用裁剪部分而不是寫入內容的圖像的部分出來test2.txt。我相信,只要搞清楚如何去做就可以做到。
我認爲,如果他們的嵌入式JPEG的,他們不應該被稱爲.txt文件。 – 2009-05-05 02:55:24
嗯,他們不是我的文件我可以重命名他們任何我想要的,但他們是他們是什麼 – PyNEwbie 2009-05-05 15:26:27