[英]python 3 open terminal and run program
我在sublime中制作了一個小腳本,該腳本將從用戶計算機上的json文件中提取命令,然后它將打開終端並運行設置/命令。 除了不真正打開終端,這可以工作。 它僅運行命令(並且可以運行,因為在我的情況下,它將運行gcc來編譯簡單的C文件),並通過管道將其發送到STDOUT而不打開終端。
import json
import subprocess
import sublime_plugin
class CompilerCommand(sublime_plugin.TextCommand):
def get_dir(self, fullpath):
path = fullpath.split("\\")
path.pop()
path = "\\".join(path)
return path
def get_settings(self, path):
_settings_path = path + "\\compiler_settings.json"
return json.loads(open(_settings_path).read())
def run(self, edit):
_path = self.get_dir(self.view.file_name())
_settings = self.get_settings(_path)
_driver = _path.split("\\")[0]
_command = _driver + " && cd " + _path + " && " + _settings["compile"] + " && " + _settings["exec"]
proc = subprocess.Popen(_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
我不確定是否使用subprocess.Popen
是正確的方法,因為我是Python的新手。
所以要重申; 我希望它打開終端,運行命令,並使終端保持打開狀態,直到用戶按ENTER或其他。 如果這很重要,我正在運行Windows 7和Python 3。
subprocess.Popen
只需使用給定命令創建一個子進程。 這與打開終端窗口或與此相關的任何其他窗口都沒有關系。
您必須研究特定於平台的UI自動化解決方案,才能實現所需的功能。 或者看看Sublime插件機制是否已經可以做到這一點。
筆記:
另外,您應該使用os.path.join
/ os.path.split
/ os.path.sep
等進行路徑操作-例如Sublime也在OS X上運行,而OS X不使用反斜杠。 另外,文件句柄需要關閉,因此請使用:
with open(...) as f:
return json.load(f) # also not that there is no nead to f.read()+json.loads()
# if you can just json.load() on the file handle
此外,通常應使用字符串插值來構建字符串:
_command = "{} && cd {} && {} && {}".format(_driver, _path, _settings["compile"], _settings["exec"])
......而且,你不應該用前綴本地變量_
-它看起來並不漂亮和服務在Python或者沒有目的; 在我們討論的同時,我不妨借此機會推薦您閱讀PEP8: http ://www.python.org/dev/peps/pep-0008/。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.