使用OperatingSystem库Get File关键字用*通配符报OSError: [Errno 22]错误如何解决
报错原因
OperatingSystem库的Get File关键字本身不支持通配符解析,它要求入参必须是指向单个存在文件的完整合法路径。你传入带*的路径时,关键字不会自动做通配符匹配展开,会直接把带*的整段字符串作为真实文件名调用系统接口读取,系统识别到文件名包含非法的*字符,就会抛出OSError: [Errno 22] Invalid argument报错。
解决方法
你需要先通过通配符匹配拿到明确的文件路径后,再调用Get File读取文件:
- 第一步:调用
OperatingSystem.Glob关键字完成通配符匹配,获取所有符合规则的文件路径列表,示例写法:
# 例:匹配当前目录下所有文件名以log开头的txt文件 ${matched_file_list} Glob log*.txt
- 第二步:校验匹配结果,再执行文件读取操作,避免无匹配/多匹配的异常:
${file_count} Get Length ${matched_file_list} # 仅匹配到单个文件时直接读取 Run Keyword If ${file_count} == 1 ${file_content} = Get File ${matched_file_list}[0] ... ELSE IF ${file_count} == 0 Fail 未找到符合通配符规则的文件 ... ELSE Fail 匹配到${file_count}个符合规则的文件,请缩小通配符范围
- 如果你需要读取所有匹配到的文件内容,直接用FOR循环遍历
${matched_file_list},逐个调用Get File关键字即可。
内容的提问来源于stack exchange,提问作者sutfahssw
相关产品推荐
相关产品推荐

