如何使用Robot Framework将文件内容转换为字典列表
解决Robot Framework生成字典列表的问题
你现在的核心问题是没有将每次生成的字典收集到一个统一列表中,而且循环外创建的字典会被反复覆盖,最终只能输出三个独立的字典。咱们调整一下关键字的代码就能实现你要的字典列表效果:
修改后的完整代码
*** Settings *** Library OperatingSystem Library String Library Collections Library utils.py *** Variables *** ${file_path}= Samplefile.txt @{sample_list}= 900982283 *** Test Cases *** Check given ID is not present in the text file Search for ID in the text file # Given ID should not be found in the file *** Keywords *** Search for ID in the text file # 初始化一个空列表,用来存放所有行对应的字典 @{dict_list}= Create List ${file}= Get file ${file_path} @{lines_in_file}= Split to lines ${file} # 处理表头,添加strip=True可去除多余空格和空元素(可选) ${line0}= Split String ${lines_in_file}[0] | strip=True Remove From List ${lines_in_file} 0 FOR ${lines} IN @{lines_in_file} # 每次循环创建新字典,避免覆盖之前的行数据 &{myDict}= Create Dictionary ${line}= Split String ${lines} | strip=True # 用Zip关键字配对表头和行数据,替代嵌套循环更简洁 @{key_value_pairs}= Zip ${line0} ${line} FOR ${pair} IN @{key_value_pairs} Set To Dictionary ${myDict} ${pair[0]}=${pair[1]} END # 将当前行的字典加入到列表中 Append To List ${dict_list} ${myDict} END # 输出最终的字典列表 Log To Console ${dict_list}
关键改动说明
- 新增列表容器:开头创建
@{dict_list}作为所有字典的统一存储容器,这是实现字典列表的核心。 - 循环内创建新字典:把
&{myDict}= Create Dictionary移到FOR循环内部,确保每一行数据对应一个全新的字典,不会被上一行的数据覆盖。 - 简化键值配对:用
Zip关键字把表头和每行数据一一配对,替代原来的嵌套循环,代码更简洁易维护。 - 收集字典到列表:每次生成完一行对应的字典后,用
Append To List把它加入到dict_list中。 - 可选优化:
Split String时加上strip=True,可以去掉分割后元素的前后空格,同时过滤掉因行首/行尾的|产生的空字符串(如果你不想保留{'': ''}这个键值对的话)。
这样修改后,你就能得到期望的字典列表输出了!
内容的提问来源于stack exchange,提问作者Indrus22




