2014-09-23 65 views
0

我有一個腳本定期讀取服務器上的文本文件並將文本的副本寫入文本文件的本地副本。我有一個問題,在最後一個字符後面添加額外的回車符和一個額外的不可見字符。如何製作服務器文件的完全相同副本?使用urllib讀取文件並添加額外字符

我使用以下方法來讀取文件

for link in links: 
try: 
    f = urllib.urlopen(link) 
    myfile = f.read() 
except IOError: 
    pass  

,並把它寫入到本地文件

f = open("C:\\localfile.txt", "w") 

try: 
    f.write(myfile) 
except NameError: 
    pass 
finally: 
    f.close() 

這是文件的外觀服務器 上! http://i.imgur.com/rAnUqmJ.jpg

這就是文件在本地的外觀。此外,在最後一個75後還有一個隱形字符! http://i.imgur.com/xfs3E8D.jpg

我已經看到了不少類似的問題,但不知道如何處理的urllib以二進制

任何解決辦法讀嗎?

回答

0

如果你想通過一個URL來表示一個遠程文件複製到本地文件我會用urllib.urlretrieve:

import urllib 
urllib.urlretrieve("http://anysite.co/foo.gz", "foo.gz") 
+0

謝謝@RobertoAllende。我會試試這個。出於好奇,使用您所建議的方法或先前用戶的讀取寫入方法是否會出現更多網絡流量? – user3754712 2014-09-23 22:51:04

+0

如果你只是做一個請求來獲取文件,它可能是相同的網絡流量,問題是你提到的問題,奇怪的字符和異常處理,異常處理,所以如果你想寫一個堅實的解決方案這個問題你最終會重寫urlretrieve,它在標準庫中是可用的,它至少有60行。所以我的建議是重用它,如果你對它的實現感興趣,只需檢查源代碼。 – RobertoAllende 2014-09-23 23:11:31

+0

謝謝@RobertoAllende – user3754712 2014-09-24 00:17:47

0

我想的urllib是讀取二進制。 嘗試改變

f = open("C:\\localfile.txt", "w") 

f = open("C:\\localfile.txt", "wb")