2014-09-23 63 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")