Есть ли утилита для переноса CSV-файла?

У меня есть несколько csv-файлов со слишком большим количеством столбцов для LibreOffice Calc для открытия, но всего несколько строк. Если я могу транспонировать файл csv, это должно быть нормально, поскольку Calc может обрабатывать очень много строк, чем столбцы.

Простая программа python выполнила бы эту работу (и поскольку это не проверено на самом деле: резервное копирование файла csv заранее!):

import csv import sys infile = sys.argv[1] outfile = sys.argv[2] with open(infile) as f: reader = csv.reader(f) cols = [] for row in reader: cols.append(row) with open(outfile, 'wb') as f: writer = csv.writer(f) for i in range(len(max(cols, key=len))): writer.writerow([(c[i] if i<len(c) else '') for c in cols]) 

Вы можете сохранить его в файл «my_csv_transposer.py» и вызвать его из командной строки следующим образом:

 python my_csv_transposer.py <theinfilename> <theoutfilename> 

Вы можете использовать этот скрипт из оболочки следующим образом:

 $ ./transpose_csv < theinfilename > theoutfilename 

И вот сценарий:

 #!/usr/bin/env python import sys, csv, itertools rows = itertools.izip(*csv.reader(sys.stdin, delimiter=',')) sys.stdout.writelines(','.join(row) + '\n' for row in rows) 

Для справки, вот то же заклинание в Ruby:

 require 'CSV' rows = CSV.new($stdin).read puts rows.transpose.map { |x| x.join ',' }