コード例 #1
0
ファイル: write.py プロジェクト: pmacosta/putil
def test_write_function_works():
    """ Test if write() method behaves properly """
    lsep = '\r\n'
    with putil.misc.TmpFile() as fname:
        putil.pcsv.write(
            fname, [['Input', 'Output'], [1, 2], [3, 4]], append=False
        )
        written_data = _read(fname)
    assert written_data == 'Input,Output{0}1,2{0}3,4{0}'.format(lsep)
    with putil.misc.TmpFile() as fname:
        putil.pcsv.write(
            fname, [['Input', 'Output'], [1, 2], [3, 4]], append=False
        )
        putil.pcsv.write(fname, [[5.0, 10]], append=True)
        written_data = _read(fname)
    assert written_data == 'Input,Output{0}1,2{0}3,4{0}5.0,10{0}'.format(lsep)
コード例 #2
0
ファイル: csv_file.py プロジェクト: pmacosta/putil
 def test_write(self):
     """ Test write method behavior """
     lsep = '\r\n'
     # Check saving filtered data
     with putil.misc.TmpFile(write_file) as fname:
         obj = putil.pcsv.CsvFile(fname=fname, dfilter={'Ctrl':1})
     ofname = fname
     with putil.misc.TmpFile() as fname:
         obj.cfilter = 'Result'
         obj.write(fname=fname, filtered=True, append=False)
         written_data = _read(fname)
     assert written_data == 'Result{0}10{0}20{0}'.format(lsep)
     # Test default fname with renamed single column
     obj.rfilter = {'Ctrl':2}
     obj.write(filtered=True, append=False, header='MyCol')
     written_data = _read(ofname)
     assert written_data == 'MyCol{0}30{0}40{0}'.format(lsep)
     obj.reset_dfilter()
     # Test repeated columns
     obj.rfilter = {'Ctrl':2}
     obj.cfilter = ['Result', 'Ref', 'Result']
     obj.write(filtered=True, append=False)
     written_data = _read(ofname)
     ref = 'Result,Ref,Result{0}30,4,30{0}40,5,40{0}'.format(lsep)
     assert written_data == ref
     obj.reset_dfilter()
     # Test repeated columns with renamed header
     obj.reset_dfilter('c')
     obj.rfilter = {'Ctrl':2}
     obj.write(filtered=True, append=False, header=['A', 'B', 'C'])
     written_data = _read(ofname)
     assert written_data == 'A,B,C{0}2,4,30{0}2,5,40{0}'.format(lsep)
     obj.reset_dfilter('R')
     # Check saving unfiltered data column-sliced and also that
     # default for append argument is False
     obj.cfilter = 'Result'
     with putil.misc.TmpFile() as fname:
         obj.write(fname=fname, filtered='c')
         written_data = _read(fname)
     ref = 'Result{0}10{0}20{0}30{0}40{0}50{0}'.format(lsep)
     assert written_data == ref
     # Check saving all data
     with putil.misc.TmpFile() as fname:
         obj.write(fname=fname, append=False)
         written_data = _read(fname)
     ref = (
         'Ctrl,Ref,Result{0}'
         '1,3,10{0}'
         '1,4,20{0}'
         '2,4,30{0}'
         '2,5,40{0}'
         '3,5,50{0}'.format(lsep)
     )
     assert written_data == ref
     obj.cfilter = ['Ctrl', 'Result']
     with putil.misc.TmpFile() as fname:
         obj.write(fname=fname, filtered=True, header=False, append=False)
         written_data = _read(fname)
     ref = '1,10{0}1,20{0}2,30{0}2,40{0}3,50{0}'.format(lsep)
     assert written_data == ref
     obj. cfilter = [0, 2]
     with putil.misc.TmpFile() as fname:
         obj.write(fname=fname, filtered=True, header=False, append=False)
         written_data = _read(fname)
     ref = '1,10{0}1,20{0}2,30{0}2,40{0}3,50{0}'.format(lsep)
     assert written_data == ref
     with putil.misc.TmpFile() as fname:
         obj.reset_dfilter()
         obj.rfilter = {'Result':[10, 30]}
         obj.write(fname=fname, filtered=True, header=True, append=False)
         obj.rfilter = {'Result':[20, 50]}
         obj.write(fname=fname, filtered=True, header=False, append=True)
         written_data = _read(fname)
     ref = (
         'Ctrl,Ref,Result{0}'
         '1,3,10{0}'
         '2,4,30{0}'
         '1,4,20{0}'
         '3,5,50{0}'.format(lsep)
     )
     assert written_data == ref
     with putil.misc.TmpFile(write_data_start_file) as fname:
         obj = putil.pcsv.CsvFile(fname=fname)
         with putil.misc.TmpFile() as fname:
             obj.write(fname=fname)
             written_data = _read(fname)
     ref = "Ctrl,Ref,Result{0}2,'',30{0}2,5,40{0}3,5,50{0}".format(lsep)
     assert written_data == ref
     # Check file without header
     with putil.misc.TmpFile(write_no_header_file) as fname:
         obj = putil.pcsv.CsvFile(fname=fname, has_header=False)
     ofname = fname
     with putil.misc.TmpFile() as fname:
         obj.cfilter = 1
         obj.write(fname=fname, filtered=True)
         written_data = _read(fname)
     assert written_data == '1{0}4{0}5{0}6{0}6{0}'.format(lsep)
     obj.rfilter = {0:1}
     with putil.misc.TmpFile() as fname:
         obj.cfilter = [1, 2]
         obj.write(fname=fname, filtered=True, header=False)
         written_data = _read(fname)
     assert written_data == '4,7{0}6,6{0}'.format(lsep)
     # Check None round trip
     with putil.misc.TmpFile(write_empty_cols) as fname:
         obj = putil.pcsv.CsvFile(fname=fname)
     assert obj.data() == [[1, None, 10], [1, 4, None]]
     with putil.misc.TmpFile() as fname:
         obj.write(fname, append=False)
         if sys.hexversion < 0x03000000:
             with open(fname, 'r') as fobj:
                 data = fobj.readlines()
         else:
             with open(fname, 'r', newline='') as fobj:
                 data = fobj.readlines()
     items = ['Col1,Col2,Col3{0}', "1,'',10{0}", "1,4,''{0}"]
     assert data == [item.format(lsep) for item in items]