這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文件,它會打印一個新的文件到標準輸出。
請注意,您不能一次合併所有文件;例如,您不能將350,000個文件名作爲參數傳遞給進程,其次,進程只能同時打開1024個文件。
所以你必須通過幾次。即合併文件1-1000,然後合併1001-2000等。然後,您應該能夠一次合併350個生成的中間文件。
或者您可以編寫一個包裝腳本,它使用os.listdir()
來獲取名稱或所有文件並多次調用此腳本。
你如何匹配行?或者他們都只是從頂部開始? –
'cat file1 file2 ...> hugeFile'怎麼樣? – fedorqui
Powershell可能很容易做到這一點 – JNK