如果字符串中包含空格,则在telnetlib write命令中将字符串与文本组合不起作用

时间:2013-09-12 13:25:09

标签: python lcd telnetlib

我正在使用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 += 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)

1 个答案:

答案 0 :(得分: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))

如果更容易阅读,以下行是等效的。 (请注意,stirng如何使用'代替",因此内部"不必转义):

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

请注意,如果curline中嵌入了引号",则可能会失败。