当前位置: 首页 > 知识库问答 >
问题:

python - 为什么 Python subprocess.Popen 调用 exe 文件未正常结束?解决方案?

戴博
2024-02-04

Python subprocess.Popen 调用的 exe 文件没有成功运行结束

我先写了一个 C++ 的程序

#include <bits/stdc++.h>using namespace std;int main() {    int n;    scanf("%d",&n);    printf("%d",n);    return 0;}

然后成功将其编译成 exe

手动在命令行调用 "F:\\Online_Judge\\static\\code\\1" <"F:\\Online_Judge\\static\\Problems\\P1000 Online Judge 试机题目\\test_points\\1.in" >"F:\\Online_Judge\\static\\code\\1_1.out" (保证文件存在且可以正常调用,并且权限足够)

可以成功运行,将 1.in 中的数据读入并写到 1_1.out 中,用 Python 运行以下代码 subprocess.Popen(['F:\\Online_Judge\\static\\code\\1', '<F:\\Online_Judge\\static\\Problems\\P1000 Online Judge 试机题目\\test_points\\1.in', '>F:\\Online_Judge\\static\\code\\1_1.out']) 使用列表传参的方式运行命令行,但是该 exe 并没有成功运行结束,在 cmd 的 tasklist 中可看见 exe 卡住了

Python 使用 subprocess.Popen 调用 exe 文件后,exe 文件卡住没有成功运行结束,请问这是什么原因?

共有1个答案

邵畅
2024-02-04

因为重定向的 < > 都不是参数。不能用参数的方式传递。

大概的这么写(没测):

with open("...\\i.in") as fpin, open("..\\1_1.out", "w") as fpout:    subprocess.Popen(["..\\1"], stdin=fpin, stdout=fpout);

Popen

stdin, stdout and stderr specify the executed program’s standard input, standard output and standard error file handles, respectively. Valid values are None, PIPE, DEVNULL, an existing file descriptor (a positive integer), and an existing file object with a valid file descriptor. With the default settings of None, no redirection will occur. PIPE indicates that a new pipe to the child should be created. DEVNULL indicates that the special file os.devnull will be used. Additionally, stderr can be STDOUT, which indicates that the stderr data from the applications should be captured into the same file handle as for stdout.
 类似资料:
  • 我有一个包含多个项目的解决方案,其中一个项目是 Web 应用程序,我希望在使用 MSBuild 构建解决方案时能够使用 web.release.config 转换 web.config。当我打电话时 MSBuild"WebProject.csproj" /t:TransformWebConfig /p:配置=发布 在 Web 项目上,我将转换后的 web.config 输出为 ...\obj\Re

  • 问题内容: 相当基本的sql命令。只想从我正在遍历的不同表中获取计数。但是,如果我更改sqlCommand并添加“;” 最后我得到异常,SQL命令未正确结束。 我很好奇为什么分号会引发此异常,因为命令应该以“;”结尾 问题答案: 半冒号通常仅用作sqlplus等交互式工具的命令终止符。

  • 当我发现这个的时候,我已经有一段时间了。使用swankjesse提供的解决方案后,错误消失了。我只是不明白为什么这是一个解决办法。我在网上找不到任何解释这种方法解决错误的原因的东西。

  • 我是这里的初学者,这个代码在理论上应该是可行的,为你们这些很棒的家伙们帮我干杯! 13195的质因数是5、7、13、29。 600851475143的最大质因数是什么? 欧拉问题3

  • 我试图使用Optaplanner来最优地分配生产单位给一组承包商。目标是分配生产单元,使实际库存尽可能接近最优库存。为此,我使用了一个软约束,简单地说,它遵循以下基本方程: 这是我的软约束评分的基础。Optaplanner的目的就是将这种差异最小化。但是,我确实有一个硬约束,它指定了可以分配的最小生产单位。每当将此约束引入问题时,Optaplanner产生的解都不是最优解。它基本上是将所有可用的生

  • 问题内容: 我正在我的应用程序上执行以下操作,但是我无法获取routeChangeSuccess事件。 如下所示的非常简单的html也会失败 但是,当我单击链接时,我看到视图正在更新,但是从未触发$ routeChangeSucces事件。 有什么我想念的吗? *我遇到的 *另一个问题 是,可以挂接一个事件以知道视图已准备好,这样我就可以开始一些其他处理,例如document.ready()。 p