2016-07-26 143 views
0

我对Python和Sublime Text API dev很新颖......所以这可能很简单吗?如何获取Sublime Text 3中的文件内容Python API

我想将文件的内容(位于当前打开的文件旁边)显示到新的面板窗口。

我可以创建一个新的面板没有问题,并得到它来显示使用

def newLogWindow(self, output): 
    window = self.view.window() 

    new_view = window.create_output_panel("log") 
    new_view.run_command('erase_view') 
    new_view.run_command('append', {'characters': output}) 
    window.run_command("show_panel", {"panel": "output.log"}) 

    sublime.status_message('Metalang') 

pass 

但我需要的是让文件的内容传递给函数的函数的字符串。

content = xxxx.open_file("filename.txt") 
// somehow get contents of this file? 
// pass it to log window 
self.newLogWindow(content); 

感谢您的帮助!

回答

2

在Sublime Text中,打开文件的内置API绑定到Window,并且将返回对应于选项卡的View。在你的情况下,你想用文件的内容来更新一个面板(一个与标签无关的View),所以Sublime Text API不能用于这个。

相反,你可以直接使用Python中的open method做到这一点:

with open('filename.txt', 'r') as myfile: 
    content = myfile.read() 
    self.newLogWindow(content) 
+0

感谢您的@基思大厅。“作品”,除了所有的NUL的,我可以在输出中看到 - > HTTPS:/ /www.dropbox.com/s/iepdg00pobmshp6/Capture.PNG?raw=1。任何想法如何摆脱这些? – markstewie

+0

@markstewie什么编码是你的'filename.txt'保存的?您可能需要将其指定为“open”调用的一部分,例如'open('filename.txt','r',encoding ='UTF-8')。 –

+0

嗯,这不起作用,但肯定与编码有关...我已经将实际文件的内容复制到新的测试文件,并按预期工作。因此,我需要解决如何更改文件的内容类型。 – markstewie