Python 使用Win32api打印到打印机

Python 使用Win32api打印到打印机,python,winapi,csv,openoffice.org,Python,Winapi,Csv,Openoffice.org,我正在尝试获取一个python脚本,通过Win32api.ShellExectute将CSV文件打印到打印机上,即 win32api.ShellExecute(0,"print","C:\Test.csv",None,".",0) 我的问题是:当我将文件与Open Office关联时,它完全拒绝打印。在记事本上打印得很好。在Microsoft Excel中打印效果良好。拒绝在开放式办公室打印 也没有错误消息。如果有人知道一种获取错误消息或其他信息的方法,至少我可以尝试处理它。我访问了OpenO

我正在尝试获取一个python脚本,通过Win32api.ShellExectute将CSV文件打印到打印机上,即

win32api.ShellExecute(0,"print","C:\Test.csv",None,".",0)
我的问题是:当我将文件与Open Office关联时,它完全拒绝打印。在记事本上打印得很好。在Microsoft Excel中打印效果良好。拒绝在开放式办公室打印


也没有错误消息。如果有人知道一种获取错误消息或其他信息的方法,至少我可以尝试处理它。我访问了OpenOffice.org的网站和他们的wiki,他们的所有解决方案都涉及使用UNO模块的集成python宏脚本。我希望从一个单独的应用程序调用print。

您依赖shell为特定文件类型定义一个“print”动词。这项工作如下:

  • 外壳去掉了文件扩展名,在本例中为“.csv”
  • shell在注册表中的HKEY_CLASSES_ROOT下查找扩展名,以查找关联的文件类型。例如,在我的系统上,这是“Excel.CSV”
  • 在HKEY_CLASSES_ROOT\filetype下,将有一个“shell”键,该键下是受支持的动词
  • 谓词下的注册表项将包含有关如何运行命令以生成所需操作的详细信息
  • 所有这些注册表项都必须由安装程序放置在那里。当您关联文件类型时,您将在步骤2中更改查找


    编辑:我没有说的是,只要您可以编辑注册表并提供适当的命令行,就没有什么可以阻止您从特定的文件类型更正谓词的发音。

    当您从shell本身执行此操作时会发生什么?我预测这也行不通。@Adam,因为这个例子声称在记事本和Excel中可以使用,所以我假设它只是一个输入错误。当我试图从shell执行它时,它会说“无法初始化设备PRN”@eryksun,我从来都不知道这些命令行查询-谢谢!谢谢大家,我知道可能有一种方法可以编辑shell如何处理它,但我对使用注册表不太熟悉。不过,我确实有一个问题:例如,当我查看Excel.CSV/shell/print/command时,我看到Excel可执行文件的文件路径有一个条目,然后我看到一个“command”条目,但在值中我得到了以下内容:“w_1^VW!!!!!!!!!MKKSkEXCELFiles>tW{~$4Q]c@II=l2xaTO5/e“我如何破译它?我希望有一个命令列表,如“打印”等,我可以在ShellExecute()中使用。另外,我如何向openoffice注册表添加.CSV条目?