在IPython中,每个shell命令都运行前缀为"!"但很少有命令在没有它的情况下运行,它背后的原因是什么?

时间:2014-07-14 11:32:57

标签: ipython ipython-notebook

在“ls”命令的情况下,它运行时带有和不带前缀“!”。在“cat fileName”的情况下它是相同的,但是当你考虑“wc -l fileName”时它只适用于“!”前缀。

组合cat和wc命令“cat fileName | wc -l”成功执行时没有“!”前缀。

我不明白这个前缀背后的逻辑“!”在ipython中。

提前谢谢你 (我是python编程的新手,如果听起来很愚蠢,请原谅我。)

1 个答案:

答案 0 :(得分:0)

IPython尝试使交互式编程尽可能舒适。一些像ls,cd或cat这样的shell内置命令是在unix shell中导航的基本命令。 IPython作为“Python Shell”在功能上提供了相同的便利性。以及彩色输出等功能

!command用于执行任意shell代码,功能更强大。它可用于运行您可以在普通shell中键入的任何命令,也可以捕获其输出。

ls!ls进行比较。前者将使用漂亮的颜色打印当前目录中的内容。后者将打印相同的列表,但只是纯文本。

但请注意,您可以使用!command

来做很酷的事情
files = !ls
for f in files:
    print("I like this file:", f)

ls的输出读入python数组files,您可以在代码中使用它,就像任何其他数组一样。

总结:如果您只想导航,通常使用标准命令(如果可用)。如果您需要捕获输出或运行程序,则必须使用!command语法。