在Python中打印Word文档

3 投票
2 回答
8585 浏览
提问于 2025-04-17 07:53

我这里有一个简单的批处理文件,可以通过命令行打印一个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"',也试过不加 +,但这样文档就打不开了。

你能帮我看看怎么才能打印这个Word文档吗?或者有没有更好的方法?

提前谢谢你!

2 个回答

0

试试下面这个:

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

Popen 需要一个完整的字符串或者参数列表,简单来说,就是把你在命令行里输入的内容直接放到 Popen 里,它就能正常工作。

关于 Popen 的文档提到:

参数应该是一个字符串,或者是一系列程序参数。

9

这样做应该没问题:

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(这是默认设置)时,命令就不是通过“壳”来执行的。这意味着你需要自己把参数分开。你可以通过传递一个包含所有参数的列表来做到这一点。在这种情况下,不需要额外的引号,因为列表里的每个元素已经提供了这些信息。

撰写回答