使用urlretrieve和urlopen访问同一网址,为什么得到不同的文件?
我对Python还比较陌生(对编程也是),在写一个从网上获取MIDI文件的程序时遇到了一些麻烦。下面是我写的代码,我原本希望能生成两个完全相同的文件:
#method one
url = "http://.../asfd.mid"
urllib.urlretrieve(url, "C:\...\this_is_file_one.mid")
#method two
g = urllib2.urlopen(url).read()
open("this_is_file_two.mid", "w").write(g)
方法一生成了一个有效的MIDI文件,而方法二却没有。当我用十六进制编辑器比较这两个文件时,我发现无效的文件(file_two)在每个有效文件中的'0A'前面多了一个字节'0D'。我还做了一些复制粘贴的比较,想看看有没有其他不同之处,但没有发现什么。不过,也可能还有我没找到的其他差异。用不同的链接也出现了同样的问题。
我感到很困惑。任何帮助都会非常感激。
谢谢。
1 个回答
4
urllib.urlretrieve()
这个函数会以二进制模式打开一个文件来保存数据。
open("this_is_file_two.mid", "wb").write(g)