1

私は 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)
4

1 に答える 1

1

したがって、この行は正しく機能すると言っています。

       tn.write("widget_set G 1 1 1 \" %s \"\n" % (cur))

そして、この行は失敗しますか?

        tn.write("widget_set G 2 1 2 " + line)

それで、最初の行がすることをしてください。これを試して:

        tn.write("widget_set G 2 1 2 \" %s \"\n" % (line))

読みやすい場合は、次の行が同等です。( sturing が'の代わりにどのように使用されるかに注意してください"。そのため、内部"の s をエスケープする必要はありません):

        tn.write('widget_set G 2 1 2 " %s "\n' %(line))

curまたはlineに引用符文字が"埋め込まれている場合、これはおそらく失敗することに注意してください。

于 2013-09-12T13:29:59.623 に答える