【问题标题】:RobotFramework :CSV Library : Error while writing into CSVRobotFramework:CSV 库:写入 CSV 时出错
【发布时间】:2018-09-25 00:16:42
【问题描述】:

我正在使用 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'

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

【问题讨论】:

  • 请不要张贴代码图片的链接。花点时间复制、粘贴和格式化您问题中的代码。
  • 对不起。更新了问题。
  • 错误发生在哪一行?我通常更喜欢将机器人关键字写成英语的高级句子,而将fors 留给 Python 代码
  • “追加到 csv 文件”发生错误
  • 你在用python3吗?

标签: csv robotframework


【解决方案1】:

我可以使用 CSVLibrary 和 python3 重现该问题。

在 CSVLibrary/init.py 中,您会找到以下函数。

@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)

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

@staticmethod
def _open_csv_file_for_write(filename, data, csv_writer=csv.writer, **kwargs):
    with open(filename, 'a') 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

【讨论】:

  • 我按照建议进行了更改,并将数据附加到 csv 文件中。非常感谢。
  • 现在的问题是,列表值中的每个字符都被写入每一列。 G|O|D|而不是在一列中的上帝
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 2014-09-26
相关资源
最近更新 更多