【问题标题】:Calling Maxima files from Python Script从 Python 脚本调用 Maxima 文件
【发布时间】:2020-11-22 09:23:50
【问题描述】:

编辑:结果表明子进程模块没有分配给 PATH 变量的目录与我系统的 shell 相同的目录。因此,解决方案是简单地使用完整路径(通过which maxima 找到)调用Maxima,或者在subprocess.run() 参数中更改env={'PATH':maxima_paths}。正如@RobertDodier 指出的那样,这不是 Maxima 的具体问题。

我有一个名为 testMaxima.txt 的文件,其中包含以下 Maxima 代码:

write_data([[1,2,3]], "test.txt");

此 Maxima 代码在工作目录中创建文件 test.txt

我希望使用 Python 脚本运行此文件。我不想手动打开 Maxima(数学引擎)来执行此操作。

我尝试过的:我知道我可以在命令行/终端中使用maxima -b testMaxima.txt 运行此文件,并且我尝试使用python 模块subprocess 使用以下python 代码模拟此代码:

import subprocess
subprocess.run("maxima -b testMaxima.txt", shell=True)

但这并没有像它应该的那样创建新的test.txt 文件。如果这有帮助,当我运行时

>>> subprocess.call("maxima -b testMaxima.txt", shell=True)
127

我得到 127 的输出。据我了解,这意味着终端找不到给定的命令。但是,当我直接通过终端执行代码maxima -b testMaxima.txt 时没有问题,所以我不确定为什么它找不到给定的命令。有人对我应该尝试什么有任何想法吗?

提前谢谢你!

编辑:根据@mkrieger 的建议,我使用的是字符串"maxima -b testMaxima.txt" 而不是序列["maxima", "-b", "testMaxima.txt"]。不幸的是,这并没有什么不同。

【问题讨论】:

  • 如果您将命令作为列表传递给subprocess.run,那么您需要使用shell=False(这是首选)。如果由于某种原因必须使用shell=True,则需要将命令作为单个字符串传递。
  • 这能回答你的问题吗? subprocess.call using string vs using list
  • @mkrieger1 不幸的是,使用字符串不会改变结果——它仍然不会产生所需的输出。
  • @mkrieger1 另外,设置shell=False 并没有什么不同。不过谢谢你的想法!
  • 嗯,它对我有用,如图所示。我在 Linux 上工作。几个想法。 (1)也许它有助于放置最大值可执行文件的完整路径? /usr/local/bin/maxima 或其他。我猜which maxima 会说。 (2) 可以通过subprocessos.system执行其他程序吗?也许问题不在于 Maxima。希望这会有所帮助。

标签: python python-3.x terminal subprocess maxima


【解决方案1】:

在 python 中使用 os.system 怎么样。

import os
os.system('maxima -b testMaxima.txt')

还要确保您在 testMaxima.txt 文件所在的位置运行此 python 脚本

【讨论】:

  • 不幸的是,这会返回错误32512,当我运行 subprocess.call 时,这似乎类似于错误 127 编辑:也是 - 脚本位于同一位置。
  • 在我的情况下,我得到了 test.txt 使用我的或您的代码生成的文件。我还检查了 test.txt 文件,其中包含 1 2 3 的数据。
  • 有趣!我希望我有你的机器哈哈。该文件正是它应该是的......我现在的猜测是无法在我正在使用的python中访问最大值。我担心这是因为我使用的是 MacOS Catalina 10.15。如果您不介意:如果您在 python 控制台中访问 shell 的变量,您的 PATH 变量中是否有一些对 maxima 应用程序的引用?如果有,目录是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 2014-06-25
  • 2019-08-20
相关资源
最近更新 更多