首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >yaml.dump似乎将两个破折号添加到第一个键下的第二行

yaml.dump似乎将两个破折号添加到第一个键下的第二行
EN

Stack Overflow用户
提问于 2019-11-25 22:56:42
回答 2查看 1K关注 0票数 2

我正在使用yaml.dump为snakemake配置生成yaml文件,但我一直收到错误Config file must be given as JSON or YAML with keys at top level

我认为这可能与我的yaml文件在yaml.dump中的不正确格式有关:

输入:

代码语言:javascript
运行
复制
with open("yaml-config-files/"+args.name+".yaml", "w") as outfile:
    ruamel.yaml.dump(yaml_dict, outfile, default_flow_style=False)

输出:

代码语言:javascript
运行
复制
- samples:
  - - Unmap_54_1.fastq
    - Unmap_51_2.fastq
    - Unmap_55_2.fastq
    - Unmap_50_1.fastq
    - Unmap_16_1.fastq
    - Unmap_13_2.fastq
    - Unmap_17_2.fastq
    - Unmap_12_1.fastq
    - Unmap_31_1.fastq
    - Unmap_34_2.fastq
    - Unmap_30_2.fastq
    - Unmap_35_1.fastq
    - Unmap_06_2.fastq
    - Unmap_03_1.fastq
    - Unmap_07_1.fastq
    - Unmap_02_2.fastq
    - Unmap_28_1.fastq
    - Unmap_21_2.fastq
    - Unmap_24_1.fastq
    - Unmap_25_2.fastq
    - Unmap_44_2.fastq
    - Unmap_41_1.fastq
    - Unmap_40_2.fastq
    - Unmap_02_1.fastq
    - Unmap_07_2.fastq
    - Unmap_03_2.fastq
    - Unmap_06_1.fastq
    - Unmap_25_1.fastq
    - Unmap_24_2.fastq
    - Unmap_21_1.fastq
    - Unmap_28_2.fastq
    - Unmap_40_1.fastq
    - Unmap_41_2.fastq
    - Unmap_44_1.fastq
    - Unmap_50_2.fastq
    - Unmap_55_1.fastq
    - Unmap_51_1.fastq
    - Unmap_54_2.fastq
    - Unmap_12_2.fastq
    - Unmap_17_1.fastq
    - Unmap_13_1.fastq
    - Unmap_16_2.fastq
    - Unmap_35_2.fastq
    - Unmap_30_1.fastq
    - Unmap_34_1.fastq
    - Unmap_31_2.fastq
    - Unmap_27_1.fastq
    - Unmap_22_2.fastq
    - Unmap_26_2.fastq
    - Unmap_23_1.fastq
    - Unmap_05_2.fastq
    - Unmap_01_2.fastq
    - Unmap_04_1.fastq
    - Unmap_09_2.fastq
    - Unmap_08_1.fastq
    - Unmap_42_1.fastq
    - Unmap_47_2.fastq
    - Unmap_43_2.fastq
    - Unmap_46_1.fastq
    - Unmap_52_2.fastq
    - Unmap_57_1.fastq
    - Unmap_53_1.fastq
    - Unmap_56_2.fastq
    - Unmap_37_2.fastq
    - Unmap_36_1.fastq
    - Unmap_33_2.fastq
    - Unmap_19_1.fastq
    - Unmap_18_2.fastq
    - Unmap_10_2.fastq
    - Unmap_15_1.fastq
    - Unmap_11_1.fastq
    - Unmap_14_2.fastq
    - Unmap_56_1.fastq
    - Unmap_53_2.fastq
    - Unmap_57_2.fastq
    - Unmap_52_1.fastq
    - Unmap_33_1.fastq
    - Unmap_36_2.fastq
    - Unmap_37_1.fastq
    - Unmap_14_1.fastq
    - Unmap_11_2.fastq
    - Unmap_15_2.fastq
    - Unmap_10_1.fastq
    - Unmap_18_1.fastq
    - Unmap_19_2.fastq
    - Unmap_23_2.fastq
    - Unmap_26_1.fastq
    - Unmap_22_1.fastq
    - Unmap_27_2.fastq
    - Unmap_08_2.fastq
    - Unmap_09_1.fastq
    - Unmap_04_2.fastq
    - Unmap_01_1.fastq
    - Unmap_05_1.fastq
    - Unmap_46_2.fastq
    - Unmap_43_1.fastq
    - Unmap_47_1.fastq
    - Unmap_42_2.fastq
- path_to_files:
  - /home/lamma/ABR/Each_reads

第二行有一个额外的破折号,有谁知道为什么会发生这种情况,这会导致我看到的错误吗?

编辑:我填充我的yaml_dict如下:

代码语言:javascript
运行
复制
yaml_dict = [{'samples' : [[os.path.basename(file) for file in glob.glob(path+"/*."+args.type)]]},
             {'path_to_files' : [path]}]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-25 23:19:52

使用注释中的代码:

代码语言:javascript
运行
复制
yaml_dict = [{'samples' : [[os.path.basename(file) for file in glob.glob(path+"/*."+args.type)]]}, {'path_to_files' : [path]}]

这一点:[[os.pa...type)]]创建了一个列表列表(注意两个[])。将其替换为以下内容:

代码语言:javascript
运行
复制
yaml_dict = [{'samples' : [os.path.basename(file) for file in glob.glob(path+"/*."+args.type)]}, {'path_to_files' : [path]}]

它只创建一个列表。

票数 1
EN

Stack Overflow用户

发布于 2019-11-25 23:01:18

我认为第二个破折号可能来自输入数据格式:

下面是一个可能导致这种情况的输入数据示例。

代码语言:javascript
运行
复制
>>> import yaml
>>> x = {"samples": [[1,2,3]]}
>>> print(yaml.dump(x))
samples:
- - 1
  - 2
  - 3

>>> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59034564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档