我正在写一个python scrpit来将文件上传到我的文件服务器:
host = "myhost.dev"
tn = telnetlib.Telnet()
tn.open(host, 5202)
print tn.read_until("\n")
fp = "./output"
f = open(fp, "r")
f_body = f.read()
tn.write(f_body)
tn.write("\n")
f.close()
如果文件有一个新行字符 - 0a
,并且它是gzip文件中二进制数据的一部分,我该怎么办才能逃脱它? python telnetlib可以自己做吗?或者我应该这样做?
最好的问候
答案 0 :(得分:4)
我认为telnet不是传输文件的最佳选择,但如果你仍然想用它来上传文件。您可以尝试执行以下操作(尚未尝试过,但我认为应该可以使用)
#On client side
...
import base64
with open('test.gz','rb') as f:
content = f.read()
content_serialized = base64.b64encode(content)+'\n'
...
#On server side
...
import base64
content = base64.b64decode(content_serialized.rstrip('\n'))
with open('test.gz','wb') as f:
f.write(content)
...
答案 1 :(得分:0)
也许telnet不是最好的解决方案,最好使用FTP或HTTP。 telnet协议不适合传输文件,它有一些控制流程,如果难以传输文件和特殊字符。 如果你想使用非标准协议,最好使用套接字模块,使用套接字你没有0a的问题。