用python写一个带有fastq对名称的txt文件

史蒂夫

我是python的新手,想对其进行改进。现在,我想编写一个python脚本,将我的fastq文件名组织成一个txt文件,如下所示:

我的文件是这样的:

d1_S10_L001_R1_001.fastq
d1_S10_L001_R2_001.fastq
d2_S11_L001_R1_001.fastq
d2_S11_L001_R2_001.fastq

我想要的是这样写一个txt文件:

d1 d1_S10_L001_R1_001.fastq d1_S10_L001_R2_001.fastq
d2 d2_S11_L001_R1_001.fastq d2_S11_L001_R2_001.fastq

该文件包含:第一个“ _”之前的字符串,后跟fastq对。它们用“ \ t”分隔。

我知道这应该是一个非常简单的python任务,但是我现在所能做的就是:

import os


files = os.listdir(os.getcwd() + "/fastq")

with open("microbiome.files", "w") as myfile:
    for file in files:
        filename = file.split("_")[0]
        myfile.write(filename + "\t" + file + '\n')

这显然做得不好。它给了我:

d1 d1_S10_L001_R1_001.fastq 
d1 d1_S10_L001_R2_001.fastq
d2 d2_S11_L001_R1_001.fastq 
d2 d2_S11_L001_R2_001.fastq

如何纠正呢?

非常感谢!

乔兰·比斯利(Joran Beasley)

您需要先对文件进行排序

files = sorted(os.listdir("fastq")) # normal sort should work fine

那么您需要按文件名的第一部分分组

import itertools
for groupID,groupItems in itertools.groupby(files,lambda x:x.split("_",1)[0]):
    my_file.write("{id} {names}\n".format(id=groupID,names=" ".join(groupItems)))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章