在python 2.7.3中,我尝试合并两个文件。 我通过互联网下载文件。整个文件大小正好是3,197,743字节。我分两部分下载,一部分是3,000,000字节,第二部分是197,743。然后,我想合并这两个文件来重建整个文件。
这是我的代码:
import requests
import shutil
URL = 'some_URL'
headers = {'user-agent': 'Agent'}
headers.update({'range': 'bytes=0-2999999'})
response = requests.get(URL, headers=headers)
file = open('some_file', 'wb')
file.write(response.content)
file.close()
headers2 = {'user-agent': 'Agent'}
headers2.update({'range': 'bytes=3000000-'})
response2 = requests.get(URL, headers=headers2)
file2 = open('some_file2', 'wb')
file2.write(response2.content)
file2.close()
source = open('some_file2','rb')
destination = open('some_file','ab')
shutil.copyfileobj(source,destination)
destination.close()
source.close()
最后,我有一个文件(示例中为“some-file”),其大小正好是3,197,743字节,但文件已损坏。我用PDF文件试过了。
问题出在哪里?
答案 0 :(得分:1)
我试图用不同的方法解决您的问题,并使用diff工具来识别程序是否以不同方式检索零件文件。我发现没有区别,因此我不确定是什么问题。
但是,我建议使用以下解决方案来解决您的用例
import urllib2
URL = "http://traffic.org/general-reports/traffic_pub_gen19.pdf"
req = urllib2.urlopen(URL)
CHUNK = 3000000
with open("some_file.pdf", 'wb') as fp:
while True:
chunk = req.read(CHUNK)
if not chunk: break
fp.write(chunk)