【问题标题】:Combining string with text in telnetlib write command doesn't work if string has spaces in如果字符串中包含空格,则在 telnetlib 写入命令中将字符串与文本组合不起作用
【发布时间】:2013-09-12 21:29:59
【问题描述】:

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

【问题讨论】:

    标签: python lcd telnetlib


    【解决方案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如何使用'而不是",所以内部"s不必转义):

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

    请注意,如果 curline 中嵌入了引号字符 ",这可能仍然会失败。

    【讨论】:

    • 使用单引号更容易并且效果很好,我没有意识到我可以将它们组合起来。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多