Я пытаюсь разобрать некоторые файлы .txt. Эти файлы служат контейнерами для переменного числа дочерних файлов, которые выделяются или идентифицируются в контейнере с помощью тегов SGML. С помощью Python я могу легко отделить дочерние файлы. Однако у меня возникли проблемы с записью двоичного содержимого обратно в виде двоичного файла (например, GIF или JPG). В простейшем случае контейнер может иметь встроенный html-файл, за которым следует графическое изображение, вызываемое html. Я предполагаю, что моя проблема в том, что я читаю оригинальный файл .txt, используя open (filename, 'r'). Но это кажется единственной возможностью найти теги sgml для разделения файла.
Буду признателен за помощь в поиске подходящего материала для чтения.
Я ценю предложения, но я все еще борюсь с самыми основными вопросами. Например, когда я открываю файл с помощью wordpad и прокручиваю вниз до раздела, помеченного как gif, я вижу это:
<FILENAME>h65803h6580301.gif
<DESCRIPTION>GRAPHIC
<TEXT>
begin 644 h65803h6580301.gif
M1TE&.#EA(P)I`=4@`("`@,#`P$!`0+^_OW]_?_#P\*"@H.#@X-#0T&!@8!`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, концы строк, кажется, все еще присутствуют, даже если они не оказывают никакого влияния на блокнот. Так что это, очевидно, одна из моих проблем, которые мне могут понадобиться, чтобы прочитать строки и соединить строки после удаления \ n
Мне нравится этот сайт, и я люблю PYTHON
Это было слишком легко, когда я прочитал пост Бендина. Мне просто нужно было отрезать раздел, который начинался со слова begin, и сохранить его в текстовом файле, а затем выполнить следующую команду:
import uu
uu.decode(r'c:\test2.txt',r'c:\test.gif')
Я должен поработать с некоторыми другими вещами до конца дня, но я опубликую больше здесь, когда я посмотрю на это более внимательно. Первое, что мне нужно выяснить, - это как использовать что-то, кроме файла, то есть, поскольку я прочитал весь файл .txt в память и вырезал раздел, содержащий изображение, которое мне нужно для работы с вырезанным разделом, а не записывал его на test2.txt. Я уверен, что это можно сделать, просто выяснив, как это сделать.