如何在python中使用命令打开shell?

时间:2015-12-04 13:23:03

标签: python linux bash shell

以下命令打开一个新shell并在其中打开nano,当我将其键入bash时:

gnome-terminal -e "bash -c 'nano test; bash'"

所以我在我的python代码中使用subprocess尝试了相同的内容:

import subprocess
command = "gnome-terminal"
args = " -e \"bash -c 'nano test; bash'\""
subprocess.call([command, args])

我已尝试过很多种组合。基本上我只想打开一个带有nano的特定文件的shell。

首先,我认为这将是最简单的步骤之一,但结果却非常困难。不知道是否由于屏蔽问题而存在问题,或者它是否是传递变量的常见问题,就像我以前在shell中一样。所以它可能是AskUbuntu或Unix部分的问题......不确定......

1 个答案:

答案 0 :(得分:1)

args应该是您在命令行中使用的相同的单个字符串集。如果您一次构建列表,则更容易思考。 gnome-terminal是命令,它需要两个参数。 (第二个参数通常被认为是-e选项的参数,但从调用者的角度来看,它只是两个参数。gnome-terminal本身就是那个将它们组合在一起作为选项/参数对。)

command = ["gnome-terminal", "-e", "bash -c 'nano test; bash'"]
subprocess.call(command)

(请注意,您可以只传递一个字符串并让shell对其进行排序,但显式参数列表更优越。

subprocess.call('''gnome-terminal -e "bash -c 'nano test; bash'"''', shell=True)