ファイルの出力をバイナリで処理していますが、出力を表すために一時的な文字列を使用しています。出力は理論的にはかなり大きい可能性があるため、unpackまたはunpack_fromを使用して出力をストリームとして処理することをお勧めします。
コードは次のようなものです。
file = '/home/t/FinancialData/GBPUSD/2007/05/01/20070501_01h_ticks.bi5';
command = ('lzma', '-kdc', '-S', 'bi5', file);
p = subprocess.Popen(command, stdout=subprocess.PIPE);
out, err = p.communicate();
for s in (out[x:x+20] for x in range(0, len(out), 20)):
values = struct.unpack(">3L2f", s)
with open(csvfilename, 'wb') as csvfile:
csvwriter = csv.writer(csvfile, delimiter=',',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
csvwriter.writerow(values);
これを書き直して、出力全体を出力に保存する必要がなく、ストリームとして処理する方法はありますか?