csvモジュールに慣れるのをお勧めします。その理由は、データがそれほど単純でない場合(見出しの単純な文字列、次に数字のみ)、すべてを再度実装することは困難であるためです。次のことを試してください。
import csv
import glob
import os
datapath = './data'
resultpath = './result'
if not os.path.isdir(resultpath):
os.makedirs(resultpath)
# Initialize the empty rows. It does not check how many rows are
# in the file.
rows = []
# Read data from the files to the above matrix.
for fname in glob.glob(os.path.join(datapath, '*.data')):
with open(fname, 'rb') as f:
reader = csv.reader(f)
for n, row in enumerate(reader):
if len(rows) < n+1:
rows.append([]) # add another row
rows[n].extend(row) # append the elements from the file
# Write the data from memory to the result file.
fname = os.path.join(resultpath, 'result.csv')
with open(fname, 'wb') as f:
writer = csv.writer(f)
for row in rows:
writer.writerow(row)
with
ファイルを開くための構成は、次のカップルで置き換えることができます。
f = open(fname, 'wb')
...
f.close()
csv.readerとcsv.writerは、ファイルの行を解析または構成する単なるラッパーです。ドキュメントには、ファイルをバイナリモードで開く必要があると書かれています。