簡體   English   中英

如何從 python 腳本在新終端中執行 cd 命令並執行附加命令?

[英]How to perform a cd command and execute additional command in a new terminal from a python script?

我正在嘗試在 ubuntu18 上運行 python 腳本,它只會打開一個新的終端/選項卡,導航到特定文件夾,然后執行命令。 但是由於我缺乏知識,這個簡單的任務看起來非常艱巨。 預期的:

In the python script
$cd /home/metabase
$java -jar metabase.jar 

我的代碼:

try1:
cmd = "gnome-terminal --tab 'cd /home/metabase/java -jar metabase.jar; read'"
os.system(cmd)
New tab opens but nothing happens

try2:
subprocess.call(['cd /home/metabase/', 'java -jar metabase.jar'])
Error:No such file or directory

我嘗試了許多其他組合。 但是導致新選項卡未打開或新選項卡打開但在同一目錄中並且什么也不做。 我對這個問題做了一些閱讀。 似乎我正在創建這些子進程,因此當我制作 CD 時,它什么也不做。 無論如何,我查看了許多類似的 stackoverflow 線程,但我仍然迷路了。 任何方向將不勝感激。 謝謝

使用 bash 命令打開新的gnome-terminal window 的命令是:

gnome-terminal -- bash -c 'your command'

在你的情況下:

gnome-terminal -- bash -c 'cd /home/metabase; java -jar metabase.jar; read'

首先確保這適用於 shell。 然后你可以從 Python 調用它:

subprocess.call(["gnome-terminal", "--", "bash", "-c", "cd /home/metabase; java -jar metabase.jar; read"])

為什么要更改目錄? 如果你願意,你可以直接這樣做:

os.system('java -jar /home/metabase/metabase.jar')將返回進程退出值, 0表示成功。

請記住, os.system將在子 shell 中執行作為字符串傳遞的命令。

如果您不想生成新的 shell,可以使用:

subprocess.call(['java', '-jar', '/home/metabase/metabase.jar'])這種方式沒有系統shell啟動,所以第一個參數必須是可執行文件的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM