Python yaml.dump似乎在第一个键下的第二行添加了两个破折号

Python yaml.dump似乎在第一个键下的第二行添加了两个破折号,python,yaml,snakemake,Python,Yaml,Snakemake,我正在使用yaml.dump为snakemake配置生成yaml文件,但我不断得到错误配置文件必须以JSON或yaml形式提供,并且键位于顶层 我认为这可能与yaml.dump中的yaml文件格式不正确有关: 输入: with open("yaml-config-files/"+args.name+".yaml", "w") as outfile: ruamel.yaml.dump(yaml_dict, outfile, default_flow_style=False) 输出: -

我正在使用yaml.dump为snakemake配置生成yaml文件,但我不断得到错误
配置文件必须以JSON或yaml形式提供,并且键位于顶层

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

输入:

with open("yaml-config-files/"+args.name+".yaml", "w") as outfile:
    ruamel.yaml.dump(yaml_dict, outfile, default_flow_style=False)
输出:

- 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_目录,如下所示:

yaml_dict = [{'samples' : [[os.path.basename(file) for file in glob.glob(path+"/*."+args.type)]]},
             {'path_to_files' : [path]}]

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

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

>>导入yaml
>>>x={“样本”:[[1,2,3]]}
>>>打印(yaml.dump(x))
样品:
- - 1
- 2
- 3
>>> 

使用注释中的代码:

yaml_dict = [{'samples' : [[os.path.basename(file) for file in glob.glob(path+"/*."+args.type)]]}, {'path_to_files' : [path]}]
这:
[[os.pa…type]
创建了一个列表列表(注意双
[]
)。将其替换为以下内容:

yaml_dict = [{'samples' : [os.path.basename(file) for file in glob.glob(path+"/*."+args.type)]}, {'path_to_files' : [path]}]

它只创建一个列表。

如何填充
yaml_dict
变量?胡乱猜测:代码中
samples
的值是一个列表列表:
{'samples':[['Unmap_54_1.fastq','Unmap_51_2.fastq',…]}
@larsks我正在填充dict如下:
yaml_dict=[{'samples':[[os.path.basename](文件)对于glob.glob(path+“/*。“+args.type)]]}中的文件,{'path_to_files':[path]}]
@SitiSchu查看我如何填充我的dict你是100%正确的。有什么建议可以避免吗?我看起来你是对的。正如@SitiSchu所建议的,我正在创建一个列表列表。已修复,因此我不再使用双破折号,但仍然从snakemake收到相同的错误消息。是时候尝试修复它了:我如何去掉破折号它位于顶级键的开头(例如,-sample,-path),而不是创建一个dict列表,只需将您的数据组合成一个dict:
{'samples':[1,2,3],'path_to_files':['path']}
而不是
[{'samples':[1,2,3]},{'path_to_files':['path']}