相当于matlab“ans”和运行shell命令

时间:2015-08-20 02:07:07

标签: python matlab shell

这些天,我使用Matlab / Octave超过十年后,从Matlab过渡到Python。我有两个简单的问题:

  1. 在Python交互模式中,是否有与Matlab的ans相对应的内容?
  2. 如何在Python交互模式下运行shell命令?当然,我可以使用os.system(),但在Matlab中我们可以通过在实际命令之前放置!来运行shell命令。 Python中有类似的内容吗?

3 个答案:

答案 0 :(得分:7)

Python交互模式是Python。您需要使用os.system或同等身份。或者,您可以使用Ctrl-Z挂起Python,然后使用fg返回到它。 (假设类似UNIX的环境。)

最后评估的表达式保存在变量_

>>> 1 + 2
3
>>> _ * 4
12

答案 1 :(得分:0)

Matlab ans的Python等价物如下:

ans = (your_expression)

换句话说,最新的表达式并不总是自动保存到默认参考,所以只需像往常一样手动保存。正如@Amadan指出的那样,表达式有时会保存到_,但并非总是如此。可靠性和清晰度的最佳实践是自己保存。

要运行shell命令,您可以按照建议使用os.system()。但是,这已被弃用,因此您应该查看subprocess模块。

答案 2 :(得分:0)

您可能想要使用IPython shell(现在是jupyeter项目的一部分)。在IPython shell中,您也可以使用!运行系统命令,尽管许多基本命令(如lscd)无需!即可运行。与MATLAB不同,您不需要将其作为字符串传递(尽管可以)。所以!ls在IPython中运行良好,而在MATLAB中你需要!'ls'。此外,您可以将结果分配给IPython中的变量,这是您在MATLAB中无法做到的。所以a = !ls在IPython中工作,但在MATLAB中不起作用。此外,如果使用!!,结果将以易于在Python中使用的形式返回。所以!!ls返回文件名列表。

IPython仍然使用_符号来获取先前的结果(除了Python,None被视为“无结果”,因此未被记录)。您还可以使用__获得倒数第二个结果,使用___获得倒数第二个结果。此外,IPython在命令提示符的每一行旁边放置一个数字。要获取特定行的结果,只需执行_n,其中n是数字。因此,要获得第3个命令的结果,该命令旁边有数字3,只需执行_3。但是,如果结果为None,则仍然无效。

它有很多功能。您可以使用_i获取之前的输入(作为字符串)(依此类推,遵循与输出相同的模式)。您可以使用%timeit%%timeit计算时间码。遇到错误后,您可以跳转到调试器。