Python - CSV-Modul zu schreiben, bestimmte Zeilen zu der neuen Datei

Ich habe da ein kleines Problem. Ich versuche ein script zu erstellen, dass nimmt große (~2 GB) csv-Dateien (id, integer, integer), sortiert Sie, indem Sie den ersten integer und schreibt dann eine neue Datei, die obersten x Zeilen (wie durch den Benutzer definiert).

Ich bin in der Lage, um die Sortierfunktion zu arbeiten als erforderlich und extrahieren die obersten X Zeilen funktioniert auch aber ich kann nicht herausfinden, wie man diese Ausgabe zu schreiben, um eine csv-Datei.
Um zu überprüfen, es hat gearbeitet, ich habe eine print-Funktion und alles scheint zu funktionieren gut.

Ich fühle mich wie ich ' m fehlt ein wirklich grundlegendes Konzept in das csv-Modul, aber ich kann nicht herausfinden, was es ist!

import csv
import operator

def csv_to_list(csv_file, delimiter=','):

    with open(csv_file, 'r') as csv_con:
        reader = csv.reader(csv_con, delimiter=delimiter)
        return list(reader)

def sort_by_column(csv_cont, col, reverse=True):

    header = csv_cont[1]
    body = csv_cont[1:]
    if isinstance(col, str):  
        col_index = header.index(col)
    else:
        col_index = col
    body = sorted(body, 
           key=operator.itemgetter(col_index), 
           reverse=reverse)
    #body.insert(0, header)
    return body

def print_csv(csv_content):
    for row in csv_content:
        row = [str(e) for e in row]
        print('\t'.join(row))

def write_csv(dest, csv_cont):
    with open(dest, 'w') as out_file:
        writer = csv.writer(out_file, delimiter=',')
        for row in csv_cont:
            writer.writerow(row)

csv_cont = csv_to_list(input_hep.csv)
row_count = sum(1 for row in csv_cont)
num_rows = int(input("Skim size?: "))
output_file = input("Output: ")

csv_sorted = sort_by_column(csv_cont, 1)
for row in range(num_rows):
    print(csv_sorted[row])

Meine Grundidee war, es zu versuchen:

with open(output_file+'.csv','w') as f:
    writer = csv.writer(f, delimiter =',')
    for row in range(num_rows):
        writer.writerow(row)

Aber dann bekomme ich eine "_csv.Fehler: iterierbar erwartet kein int" - Fehler. Ich bekomme warum, aber ich bin kämpfen, um zu verstehen, wie kann ich die Ausgabe (wie er gedruckt ist) zu schreiben in eine csv-Datei.
Irgendwelche Tipps oder Hinweise wären sehr willkommen.

InformationsquelleAutor 534 | 2015-11-05

Schreibe einen Kommentar