【发布时间】:2011-12-15 21:45:16
【问题描述】:
我尝试编写脚本以从 ftp 服务器访问 .csv.gz 文件,并将内容写入同一服务器上的 .csv 文件。只要文件小于 100mb,这种方法似乎就可以正常工作,但它会失败,导致内存错误。我无法找到仅提取 .csv 文件的方法,因此它逐行读取文件内容(元组列表)并将其写入新文件。
有没有更有效的方法来做到这一点,甚至是直接从 .csv.gz 文件中提取 .csv 文件的方法?
def gz_unzipper():
hostname = "servername"
directory = "path"
input_file = directory + "filename.csv.gz"
output_file = directory + "filename.csv"
ftp = FTP(hostname)
ftp.login (username, password)
ftp.cwd(directory)
f = gzip.open(input_file, 'r')
gz_content = f.read()
lines=csv.reader(StringIO.StringIO(gz_content))
output_file = open(output_file, 'w')
for line in lines:
line = repr(line)[1:-1]
line = line.replace("'","")
line = line.replace(" ","")
output_file.write(line + "\n")
output_file.close
f.close()
【问题讨论】:
-
您能否添加一个堆栈跟踪(python 输出),说明它遇到 MemoryError 的位置?
-
@Super Nova 我的回答对您有帮助吗?
标签: python memory gzip extraction memory-efficient