【问题标题】:Read data from large tar.gz file from the website从网站的大型 tar.gz 文件中读取数据
【发布时间】:2017-01-03 15:02:56
【问题描述】:

1) 我应该如何从网站上的 tar.gz 文件中的所有 csv 文件中读取数据,并以最节省内存和空间的方式将它们写入文件夹中的 CSV? 2) 如何循环遍历 tar.gz 文件中的所有 CSV? 3) 由于 CSV 文件很大,我如何循环读取和写入,比如说一次 100 万行?

到目前为止,我只使用了其他 stackoverflow 答案上的代码!

import pandas as pd
import urllib2
import tarfile
url='https://ghtstorage.blob.core.windows.net/downloads/mysql-2016-08-01.tar.gz'
r=urllib2.Request(url)
o=urllib2.urlopen(r)

thetarfile=tarfile.open(o, mode='r:gz')
thetarfile.close()

【问题讨论】:

  • 如果不下载远程文件,您将无法使用它。不过,如果这就是您的意思,您可以避免将其写入磁盘。同样,您不能在不解压缩的情况下处理 tgz 中的文件。如果您仍然要将 csv 文件写入文件夹,为什么要避免下载和解压缩?
  • 谢谢,拉温!现在,我怎样才能避免将其写入磁盘并写入 csv 文件。根据您的反馈,我更新了我的问题。我当然可以在这里使用你的帮助。

标签: python python-2.7 csv urllib2 tar


【解决方案1】:
  1. 将存档下载到本地存储。
  2. 显示存档中的文件列表。运行 ma​​n tar 以查看命令行选项。
  3. 从存档中逐一提取文件。
  4. 使用 SAX xml 解析器https://docs.python.org/2/library/xml.sax.reader.html
  5. 解析后删除文件。
  6. 删除存档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多