(К сожалению, я не могу комментировать, пока.)
[Отредактировано позже, следующее утверждение неверно !!!]«davesnitty-х порождающая цикл строк может быть заменен на rows = [[]] * 21
. " Это неправильно, потому что это создало бы список пустых списков, но пустые списки были бы единственным пустым списком, общим для всех элементов внешнего списка.
My +1 к использованию стандартного модуля csv. Но файл должен быть всегда закрыт, особенно когда вы открываете большую часть файлов. Кроме того, есть ошибка. Строка, считанная из файла через - хотя вы здесь только записываете результат. Решение фактически отсутствует. В принципе, строка, считанная из файла, должна быть добавлена к подсписку, связанному с номером строки. Номер строки должен быть получен через enumerate (reader), где читатель - csv.reader (fin, ...).
[добавлено позже] Попробуйте следующий код, исправьте пути для вашего puprose:
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)
Это полностью работа для 'paste'. –
есть ли команда вставки в python? – Esan
Существует Python Paste, но это не то, о чем я говорю. –