Skip to content

Commit b947e26

Browse files
committed
Updated to python3
1 parent 4551a57 commit b947e26

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

randomAccessReader/__init__.py

+10-9
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# =============
1111

1212
import csv
13-
import StringIO
13+
from io import StringIO
1414

1515
# ==========
1616
# classes
@@ -68,7 +68,7 @@ def get_lines(self, line_number, amount=1):
6868
"""
6969
lines = []
7070
with open(self._filepath) as f:
71-
for x in xrange(amount):
71+
for x in range(amount):
7272
line_data = self._lines[line_number]
7373
f.seek(line_data['position'])
7474
lines.append(f.read(line_data['length']))
@@ -84,17 +84,18 @@ def __init__(self, filepath, has_header=True, **kwargs):
8484
:param has_header:
8585
:param kwargs: endline_character='\n', values_delimiter=',', quotechar='"', ignore_corrupt=False, ignore_blank_lines=True
8686
"""
87-
super(CsvRandomAccessReader, self).__init__(filepath, kwargs.get('endline_character','\n'), kwargs.get('ignore_blank_lines', True))
87+
super(CsvRandomAccessReader, self).__init__(filepath, kwargs.get('endline_character', '\n'),
88+
kwargs.get('ignore_blank_lines', True))
8889
self._headers = None
8990
self._delimiter = kwargs.get('values_delimiter', ',')
9091
self._quotechar = kwargs.get('quotechar', '"')
9192
self._ignore_bad_lines = kwargs.get('ignore_corrupt', False)
9293
self.has_header = has_header
9394
if has_header:
9495
dialect = self.MyDialect(self._endline, self._quotechar, self._delimiter)
95-
b = StringIO.StringIO(self.get_lines(0)[0])
96+
b = StringIO(self.get_lines(0)[0])
9697
r = csv.reader(b, dialect)
97-
values = tuple(r.next())
98+
values = tuple(next(r))
9899
self._headers = values
99100

100101
@property
@@ -113,9 +114,9 @@ def _get_line_values(self, line):
113114
:return: tuple of str
114115
"""
115116
dialect = self.MyDialect(self._endline, self._quotechar, self._delimiter)
116-
b = StringIO.StringIO(line)
117+
b = StringIO(line)
117118
r = csv.reader(b, dialect)
118-
values = tuple(r.next())
119+
values = tuple(next(r))
119120
if len(self._headers) != len(values):
120121
if not self._ignore_bad_lines:
121122
raise ValueError("Corrupt csv - header and row have different lengths")
@@ -135,10 +136,10 @@ def get_line_dicts(self, line_number, amount=1):
135136
line_number += 1
136137
lines = []
137138
text_lines = self.get_lines(line_number, amount)
138-
for x in xrange(amount):
139+
for x in range(amount):
139140
vals = self._get_line_values(text_lines[x])
140141
if vals is None:
141-
lines.append(dict(zip(self._headers, range(len(self._headers)))))
142+
lines.append(dict(zip(self._headers, list(range(len(self._headers))))))
142143
else:
143144
lines.append(dict(zip(self._headers, vals)))
144145
return lines
Binary file not shown.

tests/tests.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,8 @@ def test_ignore_corrupt(self):
4444
path = os.path.dirname(os.path.abspath(__file__)) + "/corrupt.csv"
4545
reader = CsvRandomAccessReader(path, ignore_corrupt=True)
4646
corrupt_lines = reader.get_line_dicts(0,8)
47-
self.assertEqual(len(corrupt_lines), 8)
47+
self.assertEqual(len(corrupt_lines), 8)
48+
49+
50+
if __name__ == '__main__':
51+
unittest.main()

0 commit comments

Comments
 (0)