上下文
我正在修改一个小的python脚本,因此我从Xcode调试器运行的lldb命令的输出将输出到一个文件并以升华文本打开。
import lldb
import os
import subprocess
def print_to_file(debugger, command, result, dict):
#Change the output file to a path/name of your choice
f=open("/Users/venkat13/pcomponents.txt","w")
debugger.SetOutputFileHandle(f,True);
debugger.HandleCommand(command)
path = "/Users/venkat13/pcomponents.txt"
sublimePath = '/Applications/Sublime\ Text.app'
subprocess.Popen("%s %s" % (sublimePath, path))
def __lldb_init_module (debugger, dict):
debugger.HandleCommand('command script add -f po.print_to_file print_to_file ')
问题:
上面的脚本正在生成文件,但它不会以崇高的文本打开。我哪里错了?
答案 0 :(得分:0)
那是因为Popen不会直接将整个字符串传递给shell,除非你指定shell=True
(在我看来,你希望命令的工作方式与你通常在壳)。
改为使用:
subprocess.Popen([sublimePath, path])
或者,( NOT RECOMMENDED ):
subprocess.Popen("%s %s" % (sublimePath, path), shell=True)