예제 #1
0
파일: zip.py 프로젝트: e3krisztian/csvtools
def csvzip(csv_in1, csv_in2, csv_out, keep_id=False):
    i_csv_in1 = iter(csv_in1)
    i_csv_in2 = iter(csv_in2)

    header1 = Header(i_csv_in1.next())
    header2 = Header(i_csv_in2.next())

    id_field = get_id_field(header1, header2)

    extract_id1 = header1.extractor(id_field)
    extract_id2 = header2.extractor(id_field)

    extract_output1 = extractor(header1, id_field)
    extract_output2 = extractor(header2, id_field)

    def zip_rows(row1, row2):
        zip_id1 = extract_id1(row1)
        zip_id2 = extract_id2(row2)
        if zip_id1 != zip_id2:
            raise IdMismatch

        output = extract_output1(row1) + extract_output2(row2)

        if keep_id:
            return [zip_id1] + output
        else:
            return output

    csv_out.writerow(zip_rows(list(header1), list(header2)))
    csv_out.writerows(
        zip_rows(row1, row2)
        for row1, row2 in itertools.izip(i_csv_in1, i_csv_in2))
예제 #2
0
    def __init__(self, target, *args):
        Header.__init__(self, target, *args)
        self._start()

        if type(self.ports) == tuple or len(self.ports) == 1:
            self._Non_thread_scanning()
        else:
            self._Multi_threads_scanning()
def csvzip(csv_in1, csv_in2, csv_out, keep_id=False):
    i_csv_in1 = iter(csv_in1)
    i_csv_in2 = iter(csv_in2)

    header1 = Header(i_csv_in1.next())
    header2 = Header(i_csv_in2.next())

    id_field = get_id_field(header1, header2)

    id_extractor1 = header1.extractor(id_field)
    id_extractor2 = header2.extractor(id_field)

    output_extractors1 = extractors(header1, id_field)
    output_extractors2 = extractors(header2, id_field)

    def extract(extractors, row):
        return [extractor(row) for extractor in extractors]

    def zip_rows(row1, row2):
        zip_id1 = id_extractor1(row1)
        zip_id2 = id_extractor2(row2)
        if zip_id1 != zip_id2:
            raise IdMismatch

        output = (extract(output_extractors1, row1) +
                  extract(output_extractors2, row2))

        if keep_id:
            return [zip_id1] + output
        else:
            return output

    csv_out.writerow(zip_rows(list(header1), list(header2)))
    for row1, row2 in itertools.izip(i_csv_in1, i_csv_in2):
        csv_out.writerow(zip_rows(row1, row2))
예제 #4
0
def csvzip(csv_in1, csv_in2, csv_out, keep_id=False):
    i_csv_in1 = iter(csv_in1)
    i_csv_in2 = iter(csv_in2)

    header1 = Header(i_csv_in1.next())
    header2 = Header(i_csv_in2.next())

    id_field = get_id_field(header1, header2)

    extract_id1 = header1.extractor(id_field)
    extract_id2 = header2.extractor(id_field)

    extract_output1 = extractor(header1, id_field)
    extract_output2 = extractor(header2, id_field)

    def zip_rows(row1, row2):
        zip_id1 = extract_id1(row1)
        zip_id2 = extract_id2(row2)
        if zip_id1 != zip_id2:
            raise IdMismatch

        output = extract_output1(row1) + extract_output2(row2)

        if keep_id:
            return [zip_id1] + output
        else:
            return output

    csv_out.writerow(zip_rows(list(header1), list(header2)))
    csv_out.writerows(
        zip_rows(row1, row2)
        for row1, row2 in itertools.izip(i_csv_in1, i_csv_in2))
예제 #5
0
def csvzip(csv_in1, csv_in2, csv_out, keep_id=False):
    i_csv_in1 = iter(csv_in1)
    i_csv_in2 = iter(csv_in2)

    header1 = Header(i_csv_in1.next())
    header2 = Header(i_csv_in2.next())

    id_field = get_id_field(header1, header2)

    id_extractor1 = header1.extractor(id_field)
    id_extractor2 = header2.extractor(id_field)

    output_extractors1 = extractors(header1, id_field)
    output_extractors2 = extractors(header2, id_field)

    def extract(extractors, row):
        return [extractor(row) for extractor in extractors]

    def zip_rows(row1, row2):
        zip_id1 = id_extractor1(row1)
        zip_id2 = id_extractor2(row2)
        if zip_id1 != zip_id2:
            raise IdMismatch

        output = (
            extract(output_extractors1, row1)
            + extract(output_extractors2, row2))

        if keep_id:
            return [zip_id1] + output
        else:
            return output

    csv_out.writerow(zip_rows(list(header1), list(header2)))
    for row1, row2 in itertools.izip(i_csv_in1, i_csv_in2):
        csv_out.writerow(zip_rows(row1, row2))
예제 #6
0
 def __init__(self, aByteOrder):
   """Constructor"""
   Header.__init__ (self, 
                    PacketHeader,
                    aByteOrder)