예제 #1
0
 def test_additional_dialects(self):
     with open(test.data_dir / 'whitespace.csv') as csvfile:
         reader = basics.NamedTupleReader(csvfile, dialect='unix-strip')
         row = next(reader)
         self.assertEqual(row.first_name, 'Jane')
         self.assertEqual(row.last_name, 'Doe')
         self.assertEqual(row.age, '42')
예제 #2
0
    def test_rename_fields(self):
        with open(test.data_dir / 'whitespace.csv') as csvfile:
            # Try using the first row of ada a columns headers. This fails
            # because the value in the age column, '42', is not a valid python
            # identifier and cannot be used as a tuple field name.
            next(csvfile)  # Skip header
            with self.assertRaises(ValueError):
                basics.NamedTupleReader(csvfile, skipinitialspace=True)

        with open(test.data_dir / 'whitespace.csv') as csvfile:
            # Try the same thing, but allow renaming. This will use '_2' as a
            # field names instead of '42'.
            next(csvfile)  # Skip header
            reader = basics.NamedTupleReader(csvfile,
                                             rename=True,
                                             skipinitialspace=True)
            self.assertEqual(reader.fieldnames, ['Jane', 'Doe', '_2'])
예제 #3
0
 def test_too_few_fields(self):
     with open(test.data_dir / 'numbers.csv') as csvfile:
         next(csvfile)  # Skip header
         fieldnames = ['col1', 'the_rest']
         reader = basics.NamedTupleReader(csvfile, fieldnames)
         row = next(reader)
         self.assertEqual(row.col1, '11')
         self.assertEqual(row.the_rest, ['12', '13'])
예제 #4
0
 def test_too_many_fields(self):
     with open(test.data_dir / 'numbers.csv') as csvfile:
         next(csvfile)  # Skip header
         fieldnames = ['col1', 'col2', 'col3', 'extra_field']
         reader = basics.NamedTupleReader(csvfile, fieldnames)
         row = next(reader)
         self.assertEqual(row.col1, '11')
         self.assertEqual(row.col2, '12')
         self.assertEqual(row.col3, '13')
         self.assertEqual(row.extra_field, None)
예제 #5
0
 def test_fieldnames_from_header(self):
     with open(test.data_dir / 'numbers.csv') as csvfile:
         reader = basics.NamedTupleReader(csvfile)
         self.assertEqual(reader.fieldnames, ['col1', 'col2', 'col3'])
         self.assertTrue(reader.line_num, 1)
         row = next(reader)
         self.assertEqual(row.col1, '11')
         self.assertEqual(row.col2, '12')
         self.assertEqual(row.col3, '13')
         self.assertEqual(reader.line_num, 2)
예제 #6
0
 def test_simple_read(self):
     with open(test.data_dir / 'numbers.csv') as csvfile:
         next(csvfile)  # Skip header
         fieldnames = ['a', 'b', 'c']
         reader = basics.NamedTupleReader(csvfile, fieldnames)
         self.assertEqual(reader.fieldnames, fieldnames)
         row = next(reader)
         self.assertEqual(row.a, '11')
         self.assertEqual(row.b, '12')
         self.assertEqual(row.c, '13')
         self.assertEqual(reader.line_num, 1)