合并python中的两个文件

时间:2015-02-05 21:17:54

标签: python-2.7 python-requests shutil

在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文件试过了。

问题出在哪里?

1 个答案:

答案 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)