Добавление двух CSV-файлов по столбцам

Предположим, у меня есть два CSV-файла, называемых A и B в Python .

head выглядит так:

  • Как добавить новые данные на новую строку
  • Странное поведение массива Python?
  • Как вы добавляете файл?
  • Использование pandas .append внутри цикла for
  • Элемент добавления python lxml после другого элемента
  • Добавление существующего листа excel с новым фреймворком данных с использованием python pandas
  •   headerNameA1,headerNameA2 1.12412424,1 1,1 1,1 1,1 

    head B выглядит так:

      headerNameB1,headerNameB2 1,1 1,1 1,1 1,1 

    Моя цель – взять B и добавить его на A чтобы затем A выглядел так:

      headerNameA1,headerNameA2,headerNameB1,headerNameB2 1,1,1.12412424,1 1,1,1,1 1,1,1,1 1,1,1,1 

    Из другого вопроса, который я задал, вот код, который возьмет A и B и объединит их в C :

      import csv with open('A','rb') as f1, open('B','rb') as f2, open('out.csv','wb') as w: writer = csv.writer(w) r1,r2 = csv.reader(f1),csv.reader(f2) while True: try: writer.writerow(next(r1)+next(r2)) except StopIteration: break 

    Однако цель этого вопроса – просто добавить B на спину A

    Это было бы необходимо, если размер A таков, что слишком дорого для дискового пространства, чтобы сделать копию его как файла C перед удалением A после этого.

    Решение bash, вызванное через os.system , приемлемо

  • Ввод трубы в программу Python и последующий ввод данных от пользователя
  • Запуск сценария bash из Python
  • автозаполнение файла pathpath с использованием ввода пользователей
  • Не удается найти appcfg.py или dev_appserver.py?
  • Как я могу назвать git pull из Python?
  • Python добавляет несколько файлов в заданном порядке в один большой файл
  • 2 Solutions collect form web for “Добавление двух CSV-файлов по столбцам”

    Вы могли бы уйти с именованным каналом. У вас запущен процесс Python, который создает канал и открывает его в режиме записи. Затем он выводит на то, что мутированная конкатенация в CSV-файлах столбца (похоже на то, что у вас есть) уже … Когда другой процесс начинает читать этот файл, он сможет потреблять данные, но файл фактически не сохраняется на сервере это просто по требованию. Когда «файл» потребляется, в нем ничего не будет, и любая попытка доступа к нему блокируется до тех пор, пока другой процесс не запишет на другой конец.

    Некоторый фиктивный код – потребуется больше продуманной обработки исключений и т. Д. …:

     import os from itertools import izip a = 'abcdef' # File A's rows b = 'ghijkl' # File B's rows outname = 'joined' try: os.unlink(outname) os.mkfifo(outname) except OSError: pass with open(outname, 'w') as fout: for items in izip(a, b): fout.write(''.join(items) + '\n') # Do "real" write here instead... os.unlink(outname) 

    Что-то еще открывает этот «файл» в режиме чтения и потребляет его для извлечения данных. Это должно работать, если этот процесс не должен иметь «физические файлы» …

    Если вы получите две файловые дескрипторы для одного и того же файла: один в режиме «чтения», один в режиме «обновления» ( r+b ), должна работать одна и та же стратегия.

     from itertools import izip import csv with open('A','rb') as f1, open('B','rb') as f2, open('A','r+b') as w: writer = csv.writer(w) for r1,r2 in izip(csv.reader(f1),csv.reader(f2)): writer.writerow(r1+r2) 

    Когда это возможно, я бы рекомендовал против такого рода вещей и просто явно записать в третий файл.

    Python - лучший язык программирования в мире.