1
ftpサーバーから.csv.gzファイルにアクセスし、その内容を同じサーバー上の.csvファイルに書き込むスクリプトを作成しようとしました。この方法は、ファイルが100MB未満である限り正常に動作しているようですが、失敗するとメモリエラーが発生します。私はちょうど.csvファイルを抽出する方法を見つけることができませんでしたので、ファイルの内容(タプルのリスト)を1行ずつ読み込み、新しいファイルに書き込みます。Python gzip - .csv.gzファイルのメモリエラーを抽出する
これを行うより効率的な方法、または.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()
あなたはそれがMemoryErrorに当たる場所のスタックトレース(Pythonの出力)を追加することができます。
は、この(申し訳ありませんが、テストされていない)のようなものを試してみてください? –
@Super Nova私の答えはあなたにとって有益でしたか? – aganders3