1

我正在使用 telnetlib 从网络服务器读取文本文件,并将这些行推送到 LCDProc 服务器,每隔几秒旋转一次。除非导入的行中有空格,否则到目前为止一切正常。我已经阅读了 python 文档并进行了搜索,但我没有找到任何有帮助的东西,我对 Python 很陌生,这没有帮助。

'widget_set G 1 1 1' 指定了以下文本的位置,然后我添加了我想要显示的内容,这可以正常工作,但我不明白。%s 似乎插入了一个空格,我猜这是 LCDproc 服务器而不是 Python 的本机命令?'\n' 是新行吗?我不明白为什么我需要在显示器的一行上显示一个。但是,时间是用空格格式化的,并且可以正确显示:

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

问题出在显示屏的第二行,我尝试了各种 \" 和 " 的组合,结果不一,但我无法让它显示带有空格的行(它们只是空白),有时它会丢失最后一行。我应该在这里写什么让它发送'line'字符串?我确实曾经在某处使用'\"'让它工作,但后来更改了一些代码,现在无法让它再次工作?

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

有足够的耐心,我通常可以用谷歌搜索,直到找到答案,但我把头发拉出来了!

如果它有任何影响,我在每个 tn.write 行之后删除了以下行,因为它似乎用无穷无尽的数据行填充了 data 变量,这些数据没有被用于任何事情:

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))

如果更容易阅读,以下行是等效的。(注意搅拌如何使用'而不是",所以内部"s 不必被转义):

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

cur请注意,如果其中一个或其中嵌入line了引号字符,这可能仍然会失败。"

于 2013-09-12T13:29:59.623 回答