はopen()
ビルトインPythonでファイルを開くためのものです。
大文字の場合はmode = r
、他のすべてのファイルの場合はmode = a
を使用します。 Pythonはファイルがまだ存在しない場合は作成しますので、事前に作成する必要はありません。
大きなファイルを読み込んでいるときに、書き込みたいファイルへのパスを文字列として指定するだけで、文字列の書式設定を使用できます。
with open(r"/BigFile.txt",mode=r) as InputFile:
for row in InputFile:
id = #what you want to have to determine which file to write to
file_to_write_to = r"/Subfiles/outputfile{}.txt".format(id)
with open(file_to_write_to,mode="a") as OutputFile:
OutputFile.write(row + "\n")
(with open()
構文の利点は、ファイルオブジェクトに.close()
関数を呼び出す必要がないということです)
このコードは、入力に1つのファイルのオープンとクローズ操作があるという欠点を持っていますブロック。バッチとしてそれらをエクスポートする前にいくつかの出力操作のリストを作成することを検討したいかもしれませんが、それは同じファイルに複数の出力操作がある場合にのみ時間上の利点を与えます。
BATCH_SIZE = 500
batch_dict = {}
with open(r"/BigFile.txt",mode=r) as InputFile:
for index,row in enumerate(InputFile):
id = #what you want to have to determine which file to write to
if batch_dict.setdefault(str(id),row) is not None:
batch_dict[str(id)] = batch_dict[str(id)] + row +"\n"
if index % BATCH_SIZE = 0:
for batch_id,batch in batch_dict:
file_to_write_to = r"/Subfiles/outputfile{}.txt".format(id)
with open(file_to_write_to,mode="a") as OutputFile:
OutputFile.write(batch + "\n")
batch_dict = {}
(私は今のpython 3を持っていけないようなコードがテストされていない)
あなたはデータがそれの内側に置くようになったとして、なぜファイルを作成していませんか? –
これは非常に不明瞭な問題です。どのファイルにどのように書き込むかをどのように決定するのですか? –
私は今それをより明確にするために編集中です – xcvbnm