我正在尝试使用python套接字编程将文件服务器响应写入文本文件,尽管我的代码工作原理是它不是逐行写入(即)我需要在每行数据的末尾附加当前时间,但它是在打印时第二行
非常感谢您的帮助!!!
服务器端:ping www.google.com | nc -l 9000
客户方:
PORT = 9000
HOST = 127.0.0.1
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((self.HOST,self.PORT))
with open(filename, 'wb') as f:
while (recieved_data < self.BUFFER_SIZE):
try:
data = client.recv(self.BUFFER_SIZE)
recieved_data += len(data)
f.write(data + ' ' + ip_port_details + ' ' + str(datetime.strftime(datetime.now(),'%Y%m%y%I%M%S')))
print 'recieved_data',recieved_data
答案 0 :(得分:0)
可能是因为ping
已经使用换行符\n
发送数据。或ip_port_details
以相同的换行符号\n
结尾。您可以通过data.strip('\n')
删除尾随换行符,还是通过data.split('\n')
将输入数据拆分到字符串列表中,并为每个字符串添加时间戳。或者,您可以用以下内容替换所有换行符:
>>> 'abc\nd123'.replace('\n', '<newline>')
'abc<newline>123'