gpt4 book ai didi

python - 使用 subprocess.Popen 将输出从 Mathematica 脚本重定向到 PIPE 而不是 stdout 会产生空字符串

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:19 28 4
gpt4 key购买 nike

我有一个 Mathematica 脚本,可以从终端作为 bash 可执行文件运行。我想从 Python 中运行它并得到结果。这是我想使用的代码:

proc = subprocess.Popen(["./solve.m", Mrefnorm, Mvert, Mcomp, Mangle],
stdout=subprocess.PIPE,stderr=subprocess.PIPE)
result, err = proc.communicate()

不幸的是,结果是一个空字符串。但是,当我运行这段代码时,结果会如我所料打印到终端窗口:

proc = subprocess.Popen(["./solve.m", Mrefnorm, Mvert, Mcomp, Mangle],
stdout=subprocess.sys.stdout,stderr=subprocess.sys.stdout)

我找到了这个 answer对于有 Windows 的人来说,这与我遇到的问题完全相同。不幸的是,他的解决方案与他的防火墙软件沙盒化进程有关。我已经禁用了我的以检查是否可以解决它,但它没有。我已经尝试了评论者在他的问题中提到的所有方法,但都没有成功。

总而言之,Mathematica 脚本在两种情况下都运行(两者都需要大约 5 秒),但是当我使用 PIPE 时,我无法从脚本中获得输出。

最佳答案

事实证明,Mathematica 9 中存在重定向标准输出的错误。参见 https://mathematica.stackexchange.com/questions/20954/why-doesnt-my-script-work-when-i-redirect-stdout

关于python - 使用 subprocess.Popen 将输出从 Mathematica 脚本重定向到 PIPE 而不是 stdout 会产生空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21588284/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com