この python スクリプトは、あなたが望むことを行います:
#!/usr/bin/env python2
import os
import sys
import codecs
fhs = []
count = 0
for filename in sys.argv[1:]:
fhs.append(codecs.open(filename,'r','utf-8'))
count += 1
while count > 0:
delim = ''
for fh in fhs:
line = fh.readline()
if not line:
count -= 1
line = ''
sys.stdout.write(delim)
delim = ','
sys.stdout.write(line.rstrip())
sys.stdout.write('\n')
for fh in fhs:
fh.close()
マージするすべての CSV ファイルを指定して呼び出すと、新しいファイルが stdout に出力されます。
一度にすべてのファイルをマージできないことに注意してください。1 つには、350,000 個のファイル名を引数としてプロセスに渡すことはできず、2 つ目に、プロセスは一度に 1024 個のファイルしか開くことができません。
したがって、いくつかのパスでそれを行う必要があります。つまり、ファイル 1 ~ 1000、次に 1001 ~ 2000 などをマージします。その後、結果の 350 個の中間ファイルを一度にマージできるはずです。
os.listdir()
または、名前またはすべてのファイルを取得し、このスクリプトを数回呼び出すラッパー スクリプトを作成することもできます。