我正在使用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)
答案 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))
请注意,如果cur
或line
中嵌入了引号"
,则可能会失败。