2

我正在编写一个 python 脚本来将文件上传到我的文件服务器:

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 可以自己做吗?还是我应该这样做?

最好的祝福

4

2 回答 2

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)    
...
于 2011-07-18T10:16:24.163 回答
0

也许 telnet 不是最好的解决方案,最好使用 FTP 或 HTTP。telnet 协议不适合传输文件,并且它有一些控制流程,使传输文件和特殊字符变得困难。如果你想使用非标准协议,最好使用socket模块,使用sockets你不会遇到0a的这个问题。

于 2011-07-18T09:25:31.750 回答