Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python尽可能有效地下载和上载文件?_Python_Json_Performance_Memory Management_Python Requests - Fatal编程技术网

如何使用Python尽可能有效地下载和上载文件?

如何使用Python尽可能有效地下载和上载文件?,python,json,performance,memory-management,python-requests,Python,Json,Performance,Memory Management,Python Requests,所以我想做的是:我想从API下载JSON文件,然后我想将它们上传到Azure中的容器中 这是我当前的解决方案:我使用模块请求和 file = requests.get('<link>') 然后我找到本地文件,将其上载到Azure,然后删除本地文件。这是一个我对所有文件重复的过程,我觉得这似乎是非常无效的。有更好的方法吗?我想知道我是否可以直接上传请求文件,为每个文件指定一个名称,而不必在本地存储它们。想法?您可能可以使用asyncio、async和aiohttp下载文件。一个是为了

所以我想做的是:我想从API下载JSON文件,然后我想将它们上传到Azure中的容器中

这是我当前的解决方案:我使用模块请求和

file = requests.get('<link>')

然后我找到本地文件,将其上载到Azure,然后删除本地文件。这是一个我对所有文件重复的过程,我觉得这似乎是非常无效的。有更好的方法吗?我想知道我是否可以直接上传请求文件,为每个文件指定一个名称,而不必在本地存储它们。想法?

您可能可以使用
asyncio
async
aiohttp
下载文件。一个是为了速度,另一个是为了像请求中那样获取网页。下面有一篇关于如何使用
aiohttp
以及
async
asyncio
的精彩文章。我把它放在下面

Aiohttp教程


asyncio/async tutorial

如果您需要优化它的速度,请启动一个简单的web服务器(Flask、bottle等),它在特定端口上接收HTTP POST请求,而不是将文件保存到本地计算机上,而是将其发布到您的服务器上。你也应该考虑安全方面,所以只允许你的IP发布到那个服务器,或者使用一些认证系统(令牌)。
local_path = os.getcwd()
local_file_name = 'file'
open(local_file_name + '.json', 'wb').write(file.content)