как объединить 200 файлов CSV в Python

Вы можете создать / спроектировать пользовательский вид либо в nib, либо programmatically, а затем назначить его своему маркеру следующим образом.

let someView = YourCustomView()
someView.markerImageView.image = UIImage(named: "markerImage")
someView.userImageView.image = UIImage(named: "userImage")

let marker = GMSMarker()
marker.map = yourMapView
marker.position = somePositionCoordinate;
marker.iconView = someView
72
задан Dan 8 August 2019 в 13:41
поделиться

6 ответов

Как сказал ghostdog74, но на этот раз с заголовками:

fout=open("out.csv","a")
# first file:
for line in open("sh1.csv"):
    fout.write(line)
# now the rest:    
for num in range(2,201):
    f = open("sh"+str(num)+".csv")
    f.next() # skip the header
    for line in f:
         fout.write(line)
    f.close() # not really needed
fout.close()
82
ответ дан 24 November 2019 в 12:27
поделиться

Простая в использовании функция:

def csv_merge(destination_path, *source_paths):
'''
Merges all csv files on source_paths to destination_path.
:param destination_path: Path of a single csv file, doesn't need to exist
:param source_paths: Paths of csv files to be merged into, needs to exist
:return: None
'''
with open(destination_path,"a") as dest_file:
    with open(source_paths[0]) as src_file:
        for src_line in src_file.read():
            dest_file.write(src_line)
    source_paths.pop(0)
    for i in range(len(source_paths)):
        with open(source_paths[i]) as src_file:
            src_file.next()
            for src_line in src_file:
                 dest_file.write(src_line)
0
ответ дан 24 November 2019 в 12:27
поделиться

Если объединенный CSV-файл будет использоваться в Python, просто используйте glob , чтобы получить список файлов для передачи fileinput.input () с помощью аргумента files , затем используйте модуль csv , чтобы прочитать все это за один раз.

3
ответ дан 24 November 2019 в 12:27
поделиться

Вы можете импортировать csv, затем просмотреть все CSV-файлы, считывая их в список. Затем записать список обратно на диск.

import csv

rows = []

for f in (file1, file2, ...):
    reader = csv.reader(open("f", "rb"))

    for row in reader:
        rows.append(row)

writer = csv.writer(open("some.csv", "wb"))
writer.writerows("\n".join(rows))

Вышеприведенный вариант не очень надежен, поскольку в нем нет обработки ошибок, и он не закрывает открытые файлы. Это должно работать независимо от того, есть ли в отдельных файлах одна или несколько строк CSV-данных или нет. Также я не запускал этот код, но он должен дать вам представление о том, что нужно делать.

1
ответ дан 24 November 2019 в 12:27
поделиться
fout=open("out.csv","a")
for num in range(1,201):
    for line in open("sh"+str(num)+".csv"):
         fout.write(line)    
fout.close()
16
ответ дан 24 November 2019 в 12:27
поделиться

Это зависит от того, что вы подразумеваете под «слиянием» - у них одинаковые столбцы? У них есть заголовки? Например, если все они имеют одинаковые столбцы и не имеют заголовков, достаточно простой конкатенации (откройте целевой файл для записи, переберите источники, открывающие каждый для чтения, используйте shutil.copyfileobj из открытого файла. для чтения исходного кода в открытый для записи адресат, закройте источник, продолжайте цикл - используйте оператор with , чтобы выполнить закрытие от вашего имени). Если у них одинаковые столбцы, но также и заголовки, вам понадобится строка чтения для каждого исходного файла, кроме первого, после того, как вы откроете его для чтения перед копированием в место назначения, чтобы пропустить строку заголовков. .

Если в CSV-файлах не все одинаковые столбцы, вам нужно определить, в каком смысле вы их «объединяете» (например, SQL JOIN? Или «по горизонтали», если все они имеют одинаковое количество строк? и т. д. и т. д.) - нам сложно догадаться, что вы имеете в виду в этом случае.

10
ответ дан 24 November 2019 в 12:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: