私は R の世界から Python を初めて使用し、データ列で構造化された大きなテキスト ファイルに取り組んでいます (これは LiDaR データであるため、通常は 6000 万以上のレコードがあります)。
for
ファイルを読み取って行をループすることなく、このような大きなファイルのフィールド区切り文字を変更することはできますか (たとえば、タブ区切りからコンマ区切りに) 。
いいえ。
これは、ほんの数行の Python で簡単に実行できます (テストされていませんが、一般的なアプローチは機能します)。
# Python - it's so readable, the code basically just writes itself ;-)
#
with open('infile') as infile:
with open('outfile', 'w') as outfile:
for line in infile:
fields = line.split('\t')
outfile.write(','.join(fields))
私はRに精通していませんが、これのためのライブラリ関数があれば、おそらくまったく同じことをしています.
このコードはファイルから一度に 1 行しか読み取らないため、ファイルが物理 RAM よりも大きくなる可能性があることに注意してください。完全に読み込まれることはありません。
Linux の tr コマンドを使用して、任意の文字を別の文字に置き換えることができます。
できませんが、ジェネレーターを確認することを強くお勧めします。
ポイントは、データを処理するためにデータを書き込んでメモリに保存する必要なく、より高速で適切に構造化されたプログラムを作成できることです。
例えば
file = open("bigfile","w")
j = (i.split("\t") for i in file)
s = (","join(i) for i in j)
#and now magic happens
for i in s:
some_other_file.write(i)
このコードは、1 行だけを保持するためにメモリを消費します。