RobotFramework:CSV库:写入CSV时出错

时间:2018-04-15 00:02:09

标签: csv robotframework

我正在使用Robotframework和CSVLibrary来编写随机生成的字符串。写入CSV时出错。以下是代码

${datalist}   CREATE LIST
${list}=        getmandatory              test.xml     testInfo
        : FOR    ${a}    IN  @{list}
                \   ${random}=    String.Generate Random String     ${a.maxlength}      [UPPER]${a.format}
                \   append to list    ${datalist}      ${random}
        log to console   ${datalist}
        append to csv file      data.csv     ${datalist}

getmandatory是一个python pgm wshich返回给定xml中所有必填字段的列表。列表值是随机生成的字符串,['BDSVRtZEISBGItUtUMYHBULtUEZQTtDOCBFUGJAPWHXtIeYKTUAWOLSPFBXQCDWLtTIPtOJFTBXSUAYMMNtPRRFMQZGXKBUAtIFD','DHeSR']

我收到了错误,

  

TypeError:需要类似字节的对象,而不是'str'

我不确定我在这里做错了什么。请帮忙!

1 个答案:

答案 0 :(得分:2)

我可以用CSVLibrary和python3重现这个问题。

在CSVLibrary / init .py中,您将找到以下功能。

01  client-file-record.
    *> ...
    03  booking-type         PIC 9.
        88 cruise            VALUE 1.
        88 air-independent   VALUE 2.
        88 air-tour          VALUE 3.
        88 other             VALUE 4.
    *> ...

将此更改为:(' a'而不是' ab')

@staticmethod
def _open_csv_file_for_write(filename, data, csv_writer=csv.writer, **kwargs):
    with open(filename, 'ab') as csv_handler:
        writer = csv_writer(csv_handler, **kwargs)

在Python 3中,unicode字符串是默认的,你不能以二进制模式写它们。

请参阅TypeError: a bytes-like object is required, not 'str' in python and CSV