Python - перемещение всего текста между двумя файлами .doc - PullRequest
2 голосов
/ 24 января 2010

У меня уже давно есть эта проблема, и я не могу понять, как мне начать делать это с python. Моя ОС Windows XP Pro. Мне нужен скрипт, который перемещает весь (100% текста) текст из одного файла .doc в другой. Но это не так просто, как кажется. Целевой файл .doc не единственный, но их может быть много. Все целевые файлы .doc всегда находятся в одной папке (один и тот же путь), но все они не имеют одинакового имени. Файл .doc ОТ, куда я хочу переместить весь текст, только один, всегда в одной папке (с одним и тем же путем) и всегда с тем же именем файла. Названия цели похожи, но, как я уже говорил, не совпадают. Вот смысл всего сценария: Целевые файлы .doc имеют имена:

HD1.doc HD2.doc HD3.doc HD4.doc

и т. Д.

То, что я хотел бы получить - это переместить весь (но на самом деле весь текст, должен быть на 100% весь) текст в файл .doc с наибольшим (!) Номером. Целевые файлы .doc всегда начинаются с '' HD '' и всегда будут похожи на приведенные выше примеры. Возможно, что файл doc (целевой файл) только один, поэтому только HD1.doc. Поэтому «1» - это максимальное число, и текст перемещается в этот файл. Иногда целевой файл пуст, но обычно его не будет. Если этого не произойдет, тогда текст должен быть перемещен в конец текста, в первую новую строку (между ними не должно быть пустых строк). Так, например, в целевом файле с максимальным номером в названии есть следующий текст:

а

б

с

В файле, из которого я хочу переместить текст, есть:

д

Это означает, что мне нужно в целевом файле это:

а

б

с

* 1 028 * д

Но нигде нет пустых строк.

Я нашел (показывая три разных кода):

http://paste.pocoo.org/show/169309/

Но ни один из них не имеет для меня никакого смысла. Я знаю, что мне нужно начать с поиска правильного целевого файла (правильный файл HDX, где X - наибольшее число - снова все файлы HD находятся и будут в одной папке), но не знаю, как это сделать.

Я имел в виду файлы Microsoft Office Word. DOC. У них есть «чистый текст». Под чистым текстом я имею в виду, что я также могу видеть их в блокноте (.txt). Но мне нужно работать с расширениями .doc. Python - потому что я нуждаюсь в этом как в автоматизированной системе, поэтому мне даже не нужно открывать какой-либо файл. Почему именно Python, а не какой-либо другой язык программирования? Причина этого заключается в том, что недавно я начал изучать python и мне нужен этот скрипт для моей работы - Python является «единственным» языком программирования, который мне интересен, и поэтому я хотел бы сделать этот скрипт с ним. Под «действительно 100%» я имел в виду, что весь текст (все в исходном файле - каждая строка, независимо от того, есть ли 2 или несколько тысяч) будет перемещен в правильный (целевой файл описан в моем первом посте) целевой файл , Я не могу переместить весь файл, потому что мне нужно переместить весь текст (все собрано - исходный файл будет всегда одинаковым, но состязание текста всегда будет отличаться - разные слова в строках), а не весь файл, потому что мне нужен правильный текст. файл документа с правильным именем и вместе (под словом «вместе» я имею в виду внутри одного и того же файла) с уже существующим текстом, если в целевом файле уже есть что-нибудь. Поскольку возможно, что правильный целевой файл также пуст.

Если бы кто-нибудь мог предложить мне что-нибудь, я был бы очень признателен.

Спасибо, наилучшие пожелания.

Я пытался спросить на форуме openoffice, но они не отвечают. Видимый код может быть примерно таким:

  from time import sleep
  import win32com.client
  from win32com.client import Dispatch   
  wordApp = win32com.client.Dispatch('Word.Application')
  wordApp.Visible=False
  wordApp.Documents.Open('C:\\test.doc')
  sleep(5)

  HD1 = wordApp.Documents.Open('C:\\test.doc') #HD1 word document as object.
  HD1.Content.Select.Copy() #Selects entire document and copies it. `

Но я понятия не имею, что это значит. Также я не могу использовать файл .doc таким образом, потому что я никогда не знаю, какое правильное имя файла (HDX.doc, где X - максимальное целое число, все HD находятся в одном и том же пути к каталогу) файла, и поэтому я не могу использовать его имя - скрипт должен найти правильный файл. Также '' filename '' = wordApp.Documents.open ... наверняка даст мне синтаксическую ошибку. : - (

Ответы [ 2 ]

3 голосов
/ 24 января 2010

Openoffice поставляется с полной поддержкой сценариев Python, посмотрите: http://wiki.services.openoffice.org/wiki/Python

Может быть проще, чем пытаться возиться с MS Word и COM apis.

1 голос
/ 24 января 2010

Итак, вы хотите взять текст из файла документа и добавить его в конец текста в другом файле документа. И проблема здесь в том, что это файлы MS Word. Это закрытый формат, и, насколько я знаю, нет модуля для доступа к ним из Python.

Но если вы работаете в Windows, вы можете получить к ним доступ через COM API, но это довольно сложно. Но посмотрите на это. В противном случае я рекомендую не использовать файлы MS Word. Вышеприведенное звучит как своего рода средство ведения журналов, и это плохая идея использовать файлы Word для этого, это слишком хрупко.

...