2016-07-26 7 views
0

私はPythonとSublime Text APIの新機能がとても簡単です。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

サブライムテキストでは、ファイルを開くための組み込みAPIはWindowに関連付けられており、タブに対応するViewを返します。あなたのケースでは、パネルの内容(タブに関係しない既存のView)をファイルの内容で更新したいので、Sublime Text APIはこれに使用できません。

代わりにあなたがopen methodを使用してPythonで直接それを行うことができます。

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

キース・ホール@そのためのおかげで...すべてNULのI出力で見ることができますを除いて「作品」 - > HTTPS:/ /www.dropbox.com/s/iepdg00pobmshp6/Capture.PNG?raw=1。どのようにそれらを取り除くための任意のアイデア? – markstewie

+0

@markstewieあなたの 'filename.txt'はどのエンコーディングで保存されましたか? open( 'filename.txt'、 'r'、encoding = 'UTF-8') 'などの' open'呼び出しの一部として指定する必要があります。 –

+0

ええと、うまくいきませんが、エンコーディングとは何か...実際のファイルの内容を新しいテストファイルにコピーして、期待どおりに動作しています。だから私はファイルの内容の種類を変更する方法を解決する必要があります.. – markstewie

関連する問題