Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 编写telnetlib';s Telnet.interact()流到文件_Python_Telnet_Telnetlib - Fatal编程技术网

Python 编写telnetlib';s Telnet.interact()流到文件

Python 编写telnetlib';s Telnet.interact()流到文件,python,telnet,telnetlib,Python,Telnet,Telnetlib,我需要建立到telnet服务器的连接,该服务器持续广播信息,并将所有信息保存到一个文件中。为了测试,我使用了著名的ASCII星球大战,它位于tower.blinkenlights.nl上 本质上,我需要在Python中复制将以下命令输入Windows命令提示符时得到的结果:telnet tower.blinkenlights.nl/f c:/randfolder/output.txt 下面确实建立了连接,并显示了终端中接收到的数据,但我没有幸将终端中看到的内容保存到文件中: import tel

我需要建立到telnet服务器的连接,该服务器持续广播信息,并将所有信息保存到一个文件中。为了测试,我使用了著名的ASCII星球大战,它位于tower.blinkenlights.nl上

本质上,我需要在Python中复制将以下命令输入Windows命令提示符时得到的结果:
telnet tower.blinkenlights.nl/f c:/randfolder/output.txt

下面确实建立了连接,并显示了终端中接收到的数据,但我没有幸将终端中看到的内容保存到文件中:

import telnetlib

HOST = "towel.blinkenlights.nl"
PORT = "23"

telnetObj=telnetlib.Telnet(HOST,PORT)
outF = open("output.txt", "a")
outF.write(telnetObj.interact())

telnetObj.close()

虽然在我看来,这是一个相当粗糙的解决方案,但使用stdout确实会根据需要将telnet流输出到一个文件中。运行此命令将创建并附加一个文件,其中包含在中断之前接收到的所有数据

import sys
import telnetlib

with open('output.txt', 'w') as output:
    sys.stdout = output # this is where the magic happens
    HOST = "towel.blinkenlights.nl"
    PORT = "23"

    telnetObj=telnetlib.Telnet(HOST,PORT)
    outF = open("output.txt", "a")
    outF.write(telnetObj.interact())

    telnetObj.close()
然而,若对这种方法的不正确处理导致了程序中的混乱,那个么这并不奇怪。我认为把它作为一个独立的进程来运行是相当安全的