2011-07-18 180 views
2

我寫一個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() 

如果文件中有一個新行character- 0a,它是在gzip文件的二進制數據,部分是什麼我應該怎樣逃避它? python telnetlib可以自己做嗎?或者我應該這樣做?

問候

+0

Telnet不安全!文件傳輸也不可靠! –

+0

對於ftplib甚至SFTP,請參閱此問題:http://stackoverflow.com/questions/432385/sftp-in-python-platform-independent – agf

回答

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)  
... 
0

也許telnet不是我們的最佳解決方案,它是更好地使用FTPØHTTP。 Telnet協議不適合傳輸文件,它有一些控制流程過程,如果難以傳輸文件和特殊字符。 如果你想使用非標準協議,最好使用套接字模塊,套接字你沒有0a這個問題。

+1

對於FTP爲+1,對於HTTP爲-1。 ;) – mac