我正在启动一个编辑器,编辑器的路径传递给下面的函数,但如果编辑器是崇高的或其他文本编辑器,我没有更好的方法,我们可以启动vi
或nano
与subprocess.call(launchEditor = [editor, fileToOpen])
类似,但是崇高路径包含-n
和-w
标记附加在作为编辑器传递的路径上,这就是为什么当我尝试使用sublime启动时找不到错误路径的原因下面的方法,有什么方法可以获得应用程序名称,无论是sublime,textedit还是vi或nano?
def launchEditor(editor):
with tempfile.NamedTemporaryFile(delete=False) as f:
f.close()
fileName = f.name
# the below line is not a better solution.
if re.search('Sublime_Text', editor):
launchEditor = [editor.split(" ")[0], "-w", fileName]
else:
launchEditor = [editor, fileName]
if subprocess.call(launchEditor) != 0:
raise IOError("%s exited with code." % (editor.split(" ")[0]))
msg = ''
with open(fileName) as temp_file:
temp_file.seek(0)
for line in temp_file.readlines():
msg += line
return "".join(msg)
editor
参数的sublime情况下的示例路径
/Applications/Sublime_Text.app/Contents/SharedSupport/bin/subl -n -w
其他vi
或nano
..
答案 0 :(得分:4)
您能告诉我们“编辑”的一些例子吗?
由于我不知道editor
变量是如何填充的,所以我猜你正在填充它。然后你可以做这样的事情:
launchEditor("vi {0}")
launchEditor("/your/path/Sublime_Text -w {0}")
然后在函数中你可以使用
launchEditor = editor.format(fileName).split(" ")
答案 1 :(得分:0)
我认为你正在接近这个问题。问题是没有找到你是否被给予某个文本编辑器,问题是你被赋予了一个包含破坏你的脚本的标志的编辑器的路径。而是检测标志。
if "-" in editor:
# handle it
你甚至可以批发他们
import re
re.replace("\b-.*","",editor)
# this will fail extraordinarily if your path contains dash-beginning words
# e.g. "path/to/sublime -editor/is/sublime.exe -n -w"