|
8 | 8 | class CSVLibrary(object): |
9 | 9 |
|
10 | 10 | @staticmethod |
11 | | - def _open_csv_file_for_read(filename, csv_reader=csv.reader, **kwargs): |
| 11 | + def _open_csv_file_for_read(filename, csv_reader=csv.reader, line_numbers=None, **kwargs): |
| 12 | + if line_numbers is not None and isinstance(line_numbers, list): |
| 13 | + line_numbers = map(int, line_numbers) |
12 | 14 | with open(filename, 'r') as csv_handler: |
13 | 15 | reader = csv_reader(csv_handler, **kwargs) |
14 | 16 | try: |
@@ -39,58 +41,81 @@ def empty_csv_file(filename): |
39 | 41 | with open(filename, "w") as csv_handler: |
40 | 42 | csv_handler.truncate() |
41 | 43 |
|
42 | | - def read_csv_file_to_list(self, filename, delimiter=','): |
| 44 | + def read_csv_file_to_list(self, filename, delimiter=',', **kwargs): |
43 | 45 | """Read CSV file and return its content as a Python list of tuples. |
44 | 46 | |
45 | 47 | - ``filename``: name of csv file |
46 | 48 | - ``delimiter``: Default: `,` |
| 49 | + - ``quoting`` (int): |
| 50 | + _0_: QUOTE_MINIMAL |
| 51 | + _1_: QUOTE_ALL |
| 52 | + _2_: QUOTE_NONNUMERIC |
| 53 | + _3_: QUOTE_NONE |
47 | 54 | """ |
48 | 55 | csv_list = self._open_csv_file_for_read( |
49 | 56 | filename, |
50 | 57 | csv_reader=csv.reader, |
51 | | - delimiter=str(delimiter) |
| 58 | + delimiter=str(delimiter), |
| 59 | + **kwargs |
52 | 60 | ) |
53 | 61 | return [tuple(row) for row in csv_list] |
54 | 62 |
|
55 | | - def read_csv_file_to_associative(self, filename, delimiter=',', fieldnames=None): |
| 63 | + def read_csv_file_to_associative(self, filename, delimiter=',', fieldnames=None, **kwargs): |
56 | 64 | """Read CSV file and return its content as a Python list of dictionaries. |
57 | 65 | |
58 | 66 | - ``filename``: name of csv file |
59 | 67 | - ``delimiter``: Default: `,` |
60 | 68 | - ``fieldnames``: list of column names |
| 69 | + - ``quoting`` (int): |
| 70 | + _0_: QUOTE_MINIMAL |
| 71 | + _1_: QUOTE_ALL |
| 72 | + _2_: QUOTE_NONNUMERIC |
| 73 | + _3_: QUOTE_NONE |
| 74 | +
|
61 | 75 | """ |
62 | 76 | csv_dict = self._open_csv_file_for_read( |
63 | 77 | filename, |
64 | 78 | csv_reader=csv.DictReader, |
65 | 79 | delimiter=str(delimiter), |
66 | | - fieldnames=fieldnames |
| 80 | + fieldnames=fieldnames, |
| 81 | + **kwargs |
67 | 82 | ) |
68 | 83 | return [item for item in csv_dict] |
69 | 84 |
|
70 | | - def append_to_csv_file(self, filename, data): |
| 85 | + def append_to_csv_file(self, filename, data, **kwargs): |
71 | 86 | """This keyword will append data to a new or existing CSV file. |
72 | 87 | |
73 | 88 | - ``filename``: name of csv file |
74 | 89 | - ``data``: iterable(e.g. list or tuple) data. |
| 90 | + - ``quoting`` (int): |
| 91 | + _0_: QUOTE_MINIMAL |
| 92 | + _1_: QUOTE_ALL |
| 93 | + _2_: QUOTE_NONNUMERIC |
| 94 | + _3_: QUOTE_NONE |
75 | 95 | """ |
76 | 96 | if isinstance(data[0], dict): |
77 | 97 | data = map(lambda row: row.items(), data) |
78 | | - self._open_csv_file_for_write(filename, data=data, csv_writer=csv.writer) |
| 98 | + self._open_csv_file_for_write(filename, data=data, csv_writer=csv.writer, **kwargs) |
79 | 99 |
|
80 | | - def csv_file_from_associative(self, filename, data, fieldnames=None, delimiter=','): |
| 100 | + def csv_file_from_associative(self, filename, data, fieldnames=None, delimiter=',', **kwargs): |
81 | 101 | """This keyword will create new file |
82 | 102 | |
83 | 103 | - ``filename``: name of csv file |
84 | 104 | - ``data``: iterable(e.g. list or tuple) data. |
85 | 105 | - ``fieldnames``: list of column names |
86 | 106 | - ``delimiter``: Default: `,` |
| 107 | + - ``quoting`` (int): |
| 108 | + _0_: QUOTE_MINIMAL |
| 109 | + _1_: QUOTE_ALL |
| 110 | + _2_: QUOTE_NONNUMERIC |
| 111 | + _3_: QUOTE_NONE |
87 | 112 | """ |
88 | 113 | fieldnames = fieldnames or data[0].keys() |
89 | | - logger.console("fieldnames: %s" % fieldnames) |
90 | 114 | self._open_csv_file_for_write( |
91 | 115 | filename, |
92 | 116 | data=data, |
93 | 117 | csv_writer=csv.DictWriter, |
94 | 118 | delimiter=str(delimiter), |
95 | | - fieldnames=fieldnames |
| 119 | + fieldnames=fieldnames, |
| 120 | + **kwargs |
96 | 121 | ) |
0 commit comments