在 Python 子进程中使用 Windows 路径(指向可执行文件)

2024-01-27

我开始在安装了 cygwin (Python 2.7) 的 Windows 7 x64 计算机上开发一个小型 pdf 到 jpg 脚本。以下效果完美:

import subprocess
filename = "test"
subprocess.check_output('gs -sDEVICE=jpeg -dPDFFitPage -g2800x3620 -o ' + filename + '-2800-%03d.jpg ' + filename + '.pdf', stderr=subprocess.STDOUT)

在我的 Windows 10 x64 非 Cygwin 计算机 (Python 2.7) 上拉取此项目后,此代码出现错误,因为它不再将“gs”识别为 Ghostscript 的内置缩写。所以我尝试以下操作:

import subprocess
filename = "test"
subprocess.check_output('C:\Program Files\gs\gs9.20\bin\gwin64c.exe -sDEVICE=jpeg -dPDFFitPage -g2800x3620 -o ' + filename + '-2800-%03d.jpg ' + filename + '.pdf', stderr=subprocess.STDOUT)

WindowsError: [Error 2] The system cannot find the file specified

好吧,我是初学者,在这里犯了一些明显的错误。还有"\b"之间的字符.20\bin\突出显示...向我表明我不知怎的还没有明确这是一条路径。

我也尝试过的事情(单独运行):

subprocess.check_output(r'C:\Program Files\gs\gs9.20\bin\gwin64c.exe -sDEVICE=jpeg -dPDFFitPage -g2800x3620 -o ' + filename + '-2800-%03d.jpg ' + filename + '.pdf', stderr=subprocess.STDOUT')

subprocess.check_output("C:\Program Files\gs\gs9.20\bin\gwin64c.exe -sDEVICE=jpeg -dPDFFitPage -g2800x3620 -o ' + filename + '-2800-%03d.jpg ' + filename + '.pdf', stderr=subprocess.STDOUT/s", shell=True)

我读过了:

  • 如何在Python中使用dir/s命令? https://stackoverflow.com/questions/15207271/how-to-use-the-dir-s-command-in-python
  • 如何从 python 执行命令提示符命令 https://stackoverflow.com/questions/5486725/how-to-execute-a-command-prompt-command-from-python
  • 用子进程包装 cmd.exe https://stackoverflow.com/questions/2028207/wrapping-cmd-exe-with-subprocess
  • Python 子进程不接受正确的参数 https://stackoverflow.com/questions/26774488/python-subprocess-does-not-take-correct-arguments
  • 用子进程包装 cmd.exe https://stackoverflow.com/questions/2028207/wrapping-cmd-exe-with-subprocess

无济于事

给出的错误始终是:

Traceback (most recent call last):
File "C:/Python/Project/projectx/manual_conversion/manual_conversion.py", line 16, in <module>
subprocess.check_output(r'C:\Program Files\gs\gs9.20\bin\gwin64c.exe -sDEVICE=jpeg -dPDFFitPage -g2800x3620 -o ' + filename + '-2800-%03d.jpg ' + filename + '.pdf', stderr=subprocess.STDOUT)
File "C:\Python\Python 2.7.12\lib\subprocess.py", line 567, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "C:\Python\Python 2.7.12\lib\subprocess.py", line 711, in __init__
errread, errwrite)
File "C:\Python\Python 2.7.12\lib\subprocess.py", line 959, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

我完全理解这是菜鸟的东西+切换到unix会让我的生活更轻松-但在我的公司环境中我完全没有这个选择。

我也尝试过:

subprocess.check_output(r'C:\Program Files\gs\gs9.20\bin\gwin64c.exe -sDEVICE=jpeg -dPDFFitPage -g2800x3620 -o 2800-%03d.jpg test.pdf')

因为我认为我的变量串联可能破坏了命令......但这再次产生了相同的错误。

编辑 2:将完整参数作为列表传递

subprocess.check_output([r'C:\Program Files\gs\gs9.20\bin\gswin64c.exe -sDEVICE=jpeg -dPDFFitPage -g2800x3620 -o 2800-%03d.jpg test.pdf'])

产生同样的错误。但是这个:

subprocess.check_output([r'C:\Program Files\gs\gs9.20\bin\gswin64c.exe'])

是否在 Windows 中启动 Ghostscript。谢谢@lit让我尝试一些事情,现在的新问题是如何将选项传递给subprocess' check_output 可执行文件。

仍然让我困扰的是它在 Windows 系统上的工作有多简单,仅仅因为它安装了 cygwin,以某种方式修改了 cmd 命名空间以识别“gs”......


路径中包含空格Program Files。 通常,空格表示路径的末端。 使用引号"路径周围告诉操作系统不要将空格视为路径的结尾,而是将引号之间的所有文本视为路径。 所以只需添加引号即可:

subprocess.check_output([r'"C:\Program Files\gs\gs9.20\bin\gswin64c.exe" -sDEVICE=jpeg -dPDFFitPage -g2800x3620 -o 2800-%03d.jpg test.pdf']) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 子进程中使用 Windows 路径(指向可执行文件) 的相关文章

  • 如何让 shell_exec 在 IIS 6.0 上运行

    问题 我有一个 PHP 脚本 它使用shell exec运行 pdf 到文本转换器 为了简化问题 我创建了一个简短的脚本 使用shell exec只是回显的输出dir命令 当我在 Apache 服务器上运行它时 一切都按预期运行 当我切换到
  • 该进程无法访问该文件,因为该文件正在被另一个进程使用

    当我从 bat 文件启动 net 控制台应用程序时 例如start myapp exe 然后 myapp exe 尝试将文件写入其当前目录 尽管我收到 net 运行时错误 声称该文件正在被另一个应用程序使用 没有其他应用程序在运行 http
  • 如何仅回显“开”或“关”文本?

    大家都知道 在 Windows 命令文件中 cmd echo on echo off 启用和禁用回显 但是如何仅回显文本 on 或文本 off IE 如何发送文本 on off to stdout 目标系统 Windows XP 那么在 D
  • PE 文件中的跳转存根

    最近我反汇编了一个DLL 用c c 编写 发现代码段内有很多 跳转存根 这些存根除了跳转到 DLL 内的函数之外什么也不做 eg jmp foo jmp foo2 为什么编译器 Visual studio 2012 在二进制文件中包含这些函
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 导入错误:没有名为 google.auth 的模块

    当我尝试导入时firebase admin in python 2 7我收到错误 导入错误 没有名为 google auth 的模块 这是Docker文件 https github com ammaratef45 Attendance bl
  • 让 Jenkins 对远程用户不可见

    我的本地 Windows 设备上有一个 Jenkins 服务器 但我想让它对外界不可见 有关服务器的办公室规则 明显且不隐晦的 效果令人满意的方法是设置防火墙规则来阻止对其端口的传入访问 但我认为必须有一个 Jenkins 设置来阻止它向除
  • 使用 GDI+ 和 C++ 减少闪烁

    我在 C MFC 应用程序中使用 GDI 每当调整窗口大小时 我似乎都无法避免闪烁 我已经尝试过以下步骤 返回 TRUEOnEraseBkGnd 返回 NULLOnCtlColor 根据此代码使用双缓冲 void vwView OnDraw
  • python多重继承,调用基类函数

    我只是尝试在 python 中进行多重继承 我想出了这个 class ParentOne def foo self print ParentOne foo is called class ParentTwo def foo self pri
  • 将每个数组的散点移动 delta x

    I m trying to sort out a plot which at the moment looks like this 我正在尝试找出如何针对不同的情况进行轮班dx每个数据集的值 在这种模式下 系列的最后一项保持在中心 在这种情
  • python 找不到 pydicom 模块

    错误信息 In 1 import pydicom as dicomio ImportError Traceback most recent call last
  • 如何通过批处理脚本检查进程是否正在运行

    如何检查应用程序是否正在从批处理 以及 cmd 文件运行 如果程序已经在运行 我不需要启动另一个实例 我无法更改应用程序以使其仅作为单个实例 该应用程序还可以以任何用户身份运行 我想到的另一种可能性 不需要保存文件 灵感来自于使用grep
  • 如何停止 dbus gobject 循环

    我试图阻止gobject MainLoop 几秒钟后 我不知道是否可以为这种循环设置超时 这将是完美的 但我还没有找到 因此 我尝试通过线程来解决这个问题 但不幸的是 主循环阻塞了其他线程 这是我的代码 我正在使用 python 2 7 i
  • git 漂亮格式占位符之间的空格

    因为某些原因 这个原因 https stackoverflow com questions 53034425 git log pretty format windows strange behavior 我可能需要运行这样的 git 命令
  • Pandas HD5-查询,其中表达式失败

    我想查询 HDF5 文件 我愿意 df to hdf pfad df format table 将数据帧写入光盘 为了阅读我使用 hdf pandas HDFStore pfad 我有一个列表 其中包含numpy datetime64值称为
  • Python 将列表中的字符串转换为数字

    我遇到了以下错误消息 以 10 为基数的 int 的文字无效 2 2 外部用单引号括起来 内部用双引号括起来 该数据位于primes列出使用print primes 0 样本数据在primes list 2 3 5 7 The primes
  • 当我使用 SetWindowsHookEx WH_KEYBOARD_LL 交换按键时,为什么我的程序会陷入过多键盘输入事件的循环?

    I am trying to write a program for Windows system that swaps the A and B keys i e when I press the A key B gets typed an
  • Control.FindForm 和 ContainerControl.ParentForm 有什么区别

    我想知道两者之间是否有任何功能 或其他 差异Control FindForm and ContainerControl ParentForm 我一直在使用 ParentForm创建我自己的用户控件时 但有什么原因吗 FindForm会是一个
  • 是否可以编写一个在另一个 Windows 应用程序中选择文本时收到通知的 Windows 应用程序?

    我很好奇是否可以编写一个程序来监视我的文本选择 一种可能的用途是编写一个与编辑器 IDE 无关的代码格式化程序 应用程序 服务 P 启动并以某种方式挂接到窗口中 以便在任何窗口中选择文本时收到通知 启动其他一些应用程序 A 用户选择 A 中
  • 替换全局热键

    我有一个位于托盘中的应用程序 我想定义多个热键来触发我的程序中的事件 我从 AaronLS 在这个问题中的出色回答中找到了灵感 使用C 设置全局热键 https stackoverflow com a 27309185 3064934 如果

随机推荐

  • QFileDialog 作为 TableView 的编辑器在失去焦点时关闭

    我有一个QTableView与相关的QAbstractTableModel其中某些列中包含目录名称 我想用一个QFileDialog作为编辑来更改这些列 这有点不寻常 因为编辑器不会位于表格单元格内 没有足够的空间 我使用了基础知识QSty
  • 如何在 R markdown 中注释掉 R 代码块?

    我正在编辑一个 R markdown 文件 Rmd 该文件包含大量 R 代码块 可将这些代码块组移动到 子 文档中 以简化重新排列部分 如果没有其他情况 当我将节转换为子文档时 我想测试新的子文档而不运行其余的块和其他子文档 但是 当我用来
  • Python 3.3 中的哈希函数在会话之间返回不同的结果

    我在 python 3 3 中实现了 BloomFilter 并且每次会话都得到不同的结果 深入研究这种奇怪的行为让我了解了内部 hash 函数 它为每个会话的同一字符串返回不同的哈希值 Example gt gt gt hash 235
  • 如何将ResponseEntity写入HttpServletResponse?

    如何将 ResponseEntity 写入 HttpServletResponse 因为它使 ResponseBody 例如我有身份验证成功处理程序 Override public void onAuthenticationSuccess
  • lucene 字段的 store 属性

    lucene Field有一个构造函数 Field String name String value Store store Index index 例如 我可以通过以下方式创建一个新字段 Field f1 new Field text T
  • 在android中创建自定义警报框

    我知道这个问题已经被回答过很多次了 但我找不到任何好的资源 任何人都可以告诉如何创建自定义警报框对于安卓 我想要的是一个漂亮的警报框 其中有一些图像文本等 基本上是 mu 应用程序信息 我知道如何创建简单的警报框 如果可能 请指出任何示例代
  • 有没有办法从意外的“svn revert”中恢复?

    今天早上 我做了以下事情 搬起石头砸了自己的脚 开始对我的项目进行更改 对一堆文件进行了大量编辑 意识到我的方法完全错误 我需要重新开始 cd 到我的项目的顶层并执行 svn recursive revert 将我的本地沙箱恢复到更改前的状
  • 无法使用 install_github() 安装 IRkernel:Git 未安装?

    我试图让 R 在我的 Windows 机器上使用 Jupyter Notebook 我跟着IR内核教程 https irkernel github io installation 但是 我无法安装 GitHub 存储库 总是出现错误 ins
  • 避免在 VBA 代码中的 mySQL 查询中使用换行符

    我有以下内容VBA从数据库中提取数据 Sub Get Data from DWH Dim conn As New ADODB Connection Dim rs As New ADODB Recordset Dim dateVar As D
  • Visual Studio 和 TFS,检测 Visual Studio 外部的更改[重复]

    这个问题在这里已经有答案了 我正在使用带有 ASP NET Web 应用程序的 Visual Studio 2015 并安装了 Umbraco 和 uSync uSync 和 Umbraco 是什么并不重要 但是当我启动项目并在 Umbra
  • Kerberos - SPN 和密钥表

    我有一个项目 其中嵌入了启用了 SPNEGO 的 jetty 我希望能够在本地运行该项目以用于开发目的 启用 SPNEGO 我的问题是 SPN 和 keytab 是否与特定服务器相关联 或者我可以在服务的多个实例上使用同一组吗 Kerber
  • IHTTPModule 在 ASP.NET 中在 HTTP 和 HTTPS 之间切换

    我正在开发一个网站 其中包含需要通过 SSL 保护的部分 我已配置网站 以便在始终处于 SSL 模式时运行正常 我在 IE7 IE8 FireFox Safari Chrome 中看到 SSL 挂锁 为了实现 SSL 切换 我创建了一个实现
  • facebook redirect_uri 设置为 ios URL 方案

    我开始研究如何以编程方式使用 Facebook 我已经在我的应用程序中设置了 URL 方案 以便我可以使用 myappopenup 从浏览器打开它 然后我在 Facebook 上创建了一个应用程序 复制一个 AppId 并尝试如下所示 le
  • SVG中foreignObject的特征检测

    我在 SVG 中使用foreignObject 元素 但是 IE9 不支持该元素 我正在寻找一种检测此功能的方法 Modernizr 没有检测到此功能 似乎我无法像使用矩形 createSVGRect 一样使用 createSVGForei
  • 如何从 Perl 程序打开 Excel(程序,而不是文件)?

    我目前在 Windows 中有一个 perl 程序 它通过 Spreadsheet WriteExcel 创建并填充一个 excel 文件 但我希望在程序关闭时打开该文件 我尝试用谷歌搜索信息 但我发现的只是如何在 perl 中打开和读取
  • mysql 复杂的sql

    我今天早些时候提出了一个问题 并得到了很好的答复 效果很好 这个问题的第二部分从未得到答复 所以我再试一次 SELECT q id q question a question id a answer a correct FROM SELEC
  • 将列从 VARCHAR(MAX) 更改为 VARBINARY(MAX)

    我有一张桌子 上面有一个VARCHAR MAX 列 我需要将其更改为VARBINARY MAX 我尝试使用命令 ALTER TABLE TableName ALTER COLUMN ColumnName VARBINARY MAX 但我得到
  • 具有语法着色功能的 HTML 编辑器 jQuery 插件

    我正在寻找一个 jQuery 插件 它将显示用于 HTML 创作和编辑的文本区域 我正在寻找的东西 必须支持编写 HTML 而不是所见即所得的表示形式 必须像任何富客户端 IDE 一样在您键入时为 HTML 着色 应该是 jQuery 但原
  • Git 格式补丁查看器?

    有人正在向我发送由 git format patch 生成的补丁 是否有一个 GUI 在 Linux 上 可以打开这些 patch 文件 我已经尝试了很多 diff gui 但它们所做的只是比较两个现有的文件 文件夹 没有人可以显示补丁 除
  • 在 Python 子进程中使用 Windows 路径(指向可执行文件)

    我开始在安装了 cygwin Python 2 7 的 Windows 7 x64 计算机上开发一个小型 pdf 到 jpg 脚本 以下效果完美 import subprocess filename test subprocess chec