以下命令打开一个新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部分的问题......不确定......
答案 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)
)