Печать документа Word в Python - PullRequest
3 голосов
/ 07 декабря 2011

У меня есть простой пакетный файл, который будет печатать документ Word из командной строки.

"C:\Program Files\Microsoft Office\Office12\winword.exe" "p:\docs\daily checks.doc" /mFilePrintDefault /mFileExit

Я пытаюсь поместить это в скрипт на Python, мне удалось открыть документ с помощью

subprocess.Popen('"C:\\Program Files\Microsoft Office\Office12\winword.exe"' '"P:\\docs\\daily checks.doc "')

Не получается получить часть /mFilePrintDefault /mFileExit в команде, я пытался использовать +'"/mFilePrintDefault /mFileExit"' plus без +, но тогда документ не открывается.

Можете ли вы помочь увидеть, как я могу напечатать этот документ Word, или есть лучший способ

Заранее спасибо

Ответы [ 2 ]

8 голосов
/ 07 декабря 2011

Это должно работать:

subprocess.Popen(["C:\\Program Files\Microsoft Office\Office12\winword.exe", "P:\\docs\\daily checks.doc", "/mFilePrintDefault", "/mFileExit"]).communicate()

Или, альтернативно,

subprocess.Popen("'C:\\Program Files\Microsoft Office\Office12\winword.exe' 'P:\\docs\\daily checks.doc' /mFilePrintDefault /mFileExit", shell=True).communicate()

Когда вы используете shell=True, команда выполняется через оболочку.Это означает, что вам нужно передать одну строку так же, как вы написали бы команду в оболочке, то есть с кавычками, чтобы предотвратить разделение аргументов с пробелами.

Когда вы используете shell=False(значение по умолчанию), команда не выполняется через оболочку.Это означает, что вы должны разделить аргументы самостоятельно.То, как вы это делаете, передает список со всеми аргументами.В этом случае дополнительное цитирование не требуется, поскольку элементы списка уже предоставляют эту информацию.

0 голосов
/ 07 декабря 2011

попробуйте использовать следующее:

subprocess.Popen('"C:\\Program Files\Microsoft Office\Office12\winword.exe" m"P:\\docs\\daily checks.doc" /mFilePrintDefault /mFileExit')

Popen ожидает полную строку или список аргументов, в основном введите то, что вы ввели бы в оболочку, в Popen, и она будет работать.

Документация по Popen гласит:

Аргументы должны быть строкой или последовательностью аргументов программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...