YAML 加载器将路径视为十六进制数

him*_*him 6 python yaml pyyaml pycharm python-3.x

我正在尝试用 Python 读取 YAML 文件,但由于路径中的“\”,它认为该文件是十六进制数,因此失败,这是我的代码

import yaml

def parse_yaml(file_path):
    with open(file_path) as stream:
        yaml_dict = None
        try:
            yaml_dict = yaml.safe_load(stream)
        except yaml.YAMLError as exc:
            print(exc)
    return yaml_dict


file_path = r"C:\\Users\\user\\PycharmProjects\\testautomation\\conf_windows\\generic_configs.yml"
print(parse_yaml(file_path))
Run Code Online (Sandbox Code Playgroud)

错误信息:

Error

while scanning a double-quoted scalar
  in "C:\\Users\\user\\PycharmProjects\\testautomation\\conf_windows\\generic_configs.yml", line 2, column 16
expected escape sequence of 8 hexdecimal numbers, but found 's'
  in "C:\\Users\\user\\PycharmProjects\\testautomation\\conf_windows\\generic_configs.yml", line 2, column 21
None
Run Code Online (Sandbox Code Playgroud)

我尝试用正斜杠和反斜杠给出路径。甚至尝试使用 os.path 但没有任何效果。相同的代码在 Mac 上运行良好,但在 Windows 上失败。

yaml 文件内容

batchwrite:
  input_file : "/Users/user/Documents/Codes/testautomation/input/batch_write_input.xlsx"
  output_path : "/Users/user/Documents/Codes/testautomation/output"
  dml_file : "/Users/user/Documents/Codes/testautomation/conf/info.dml"
  file_type_yml : "/Users/user/Documents/Codes/testautomation/conf/fields.yml"
Run Code Online (Sandbox Code Playgroud)

him*_*him 0

该错误指的是我在 YAML 文件中给出的路径,而不是我给出的代码的路径。在 YAML 中的字符串内容中添加 r"..." 后,它就像魅力一样。更新了 YAML 文件的内容

batchwrite:
  input_file : r"/Users/user/Documents/Codes/testautomation/input/batch_write_input.xlsx"
  output_path : r"/Users/user/Documents/Codes/testautomation/output"
  dml_file : r"/Users/user/Documents/Codes/testautomation/conf/info.dml"
  file_type_yml : r"/Users/user/Documents/Codes/testautomation/conf/fields.yml"
Run Code Online (Sandbox Code Playgroud)