Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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 从ftp下载包含数百万xml的zip并上传到s3_Python_Xml_Amazon S3 - Fatal编程技术网

Python 从ftp下载包含数百万xml的zip并上传到s3

Python 从ftp下载包含数百万xml的zip并上传到s3,python,xml,amazon-s3,Python,Xml,Amazon S3,我正在尝试更正一个python代码,该代码将下载10个zip文件(每个10 GB),其中包含数百万个随机文件夹层次结构中的小型xml文件 我的任务是编写一个python程序,该程序将在ecs容器上运行,该容器将从ftp下载文件,提取xml,然后根据日期以分区方式将xml上载到s3存储桶。该日期在xml中可用,但幸运的是,我有一个单独的csv文件,其中包含所有文件名和日期的列表,因此不需要解析每个xml 我正试图找到一种能快速有效地完成这一切的方法 这就是我脑子里想的当前原型 1) 使用FTP客户

我正在尝试更正一个python代码,该代码将下载10个zip文件(每个10 GB),其中包含数百万个随机文件夹层次结构中的小型xml文件

我的任务是编写一个python程序,该程序将在ecs容器上运行,该容器将从ftp下载文件,提取xml,然后根据日期以分区方式将xml上载到s3存储桶。该日期在xml中可用,但幸运的是,我有一个单独的csv文件,其中包含所有文件名和日期的列表,因此不需要解析每个xml

我正试图找到一种能快速有效地完成这一切的方法

这就是我脑子里想的当前原型

1) 使用FTP客户端将文件从FTP下载到本地目录 2) 将查找文件存储为python dict 3) 使用Zipinfo API检查每个xml文件,将名称与字典匹配并检索日期,然后使用boto3将xml上载到s3中的正确目录

任何可以改进此过程的建议

我担心的是这个过程是非常线性的,它会一次处理每个文件。我的另一个想法是使用多处理,这样每个zip文件都由zipinfo API并行处理并上传到s3 bucket

使用zipinfo在zip中迭代文件会比完全提取zip然后迭代每个文件慢吗


欢迎提出任何建议。谢谢

你做了两倍的工作。您必须先解压缩,然后才能迭代文件以获取每个文件。zip结构类似于文件系统,可以快速解压磁盘上的连续扇区,只需获取zip文件的字节,然后在连续扇区上写入磁盘即可。如果您试图获取信息,则必须解析字节。