私は telnetlib を使用して Web サーバーからテキスト ファイルを読み取り、数秒ごとにローテーションしながら行を LCDProc サーバーにプッシュします。インポートされた行にスペースがない限り、これまでのところすべて正常に機能します。Pythonのドキュメントを読んで検索しましたが、役立つものは何も見つかりません。役に立たないPythonは初めてです。
「widget_set G 1 1 1」は、次のテキストをどこに置くべきかを指定します。その後、表示したいものを追加します。これは問題なく動作しますが、理解できません。%s はスペースを挿入しているように見えますが、これは Python ではなく LCDproc サーバーに固有のコマンドであると推測していますか? '\n' は改行ですか? ディスプレイの 1 行に 1 つ必要な理由がわかりません。ただし、時間はスペースでフォーマットされており、これは正しく表示されます。
tn.write("widget_set G 1 1 1 \" %s \"\n" % (cur))
問題はディスプレイの 2 行目にあります。\" と " のさまざまな組み合わせを試してみましたが、結果がまちまちでしたが、スペースを含む行を表示できず (空白になるだけです)、見逃すこともあります。最後の行。「line」文字列を送信するには、ここに何を書く必要がありますか? どこかで '\"' を使用して、ある時点で動作していましたが、コードの一部を変更したため、再び動作するようになりませんか?
tn.write("widget_set G 2 1 2 " + line)
十分な忍耐力があれば、答えが見つかるまで通常は Google で検索できますが、ここで髪を引っ張っています。
関係がある場合は、すべての tn.write 行の後に次の行を削除しました。これは、データ変数が何にも使用されていないデータの無限の行でいっぱいになっているように見えたためです。
data += tn.read_until("\n");
参照用の完全なコード:
#!/usr/bin/python
import telnetlib;
import time;
import urllib2;
host='127.0.0.1';
port='13666';
tn = telnetlib.Telnet(host, port)
tn.write("hello\r");
tn.write("screen_add G\n");
tn.write("widget_add G 1 string\n");
tn.write("widget_add G 2 string\n");
var = 1;
while var == 1 :
file = urllib2.urlopen("http://192.168.100.17/test.txt")
for line in file.readlines():
time.ctime()
cur = time.strftime('%l:%M:%S %p')
tn.write("widget_set G 1 1 1 \" %s \"\n" % (cur))
tn.write("widget_set G 2 1 2 " + line)
time.sleep(1)