使用python将文件拆分为许多其他文件

使用python将文件拆分为许多其他文件,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我有一个文件,我想把它分成许多其他部分。我想使用python代码 我文件中的数据是这样的 >2165320 21411 200802 8894-,...,765644- TTCGGAGCTTACTAATTTTAAATATGAAGAATGCCAATATAAGTTTTGATTTCGAAAATACTTTTTTACTAGTTAAAAATTCATGATTTTCTACATCTATAACAATTTGTGTTTTTTTTAAACATCTTCCAGTGTCCTAAGTGTATATTTTTTAACGCAATG

我有一个文件,我想把它分成许多其他部分。我想使用python代码

我文件中的数据是这样的

>2165320 21411 200802 8894-,...,765644-
TTCGGAGCTTACTAATTTTAAATATGAAGAATGCCAATATAAGTTTTGATTTCGAAAATACTTTTTTACTAGTTAAAAATTCATGATTTTCTACATCTATAACAATTTGTGTTTTTTTTAAACATCTTCCAGTGTCCTAAGTGTATATTTTTTAACGCAATGTTTGAATACTTTTAGGGTTTACCTTATTTAATTTGATTTTTAATGTGAGTTGTAATCACTGGTGAGCATACTGTTTTTCTTTTGTTCAGTAATATTGCATTTGTAGCTTTTGTATTGCTTAGATATATCACATTAAATCCTTTGTTCAGAAACCCATCCGACAGGGAGTCATAGGTGCCACACTAGTGGTCGAGGATCTAGGATGTCGGAAGGTCAACAATGGGGTAAAACACTAATTTTTTAATTTCTTGTATTTACCAAATTTACTGATTTTGCATTTAGTAGATGGTATATATACTCTTCTACCTTGTACAGTTGATGGTACCTGACTAAATATGTTTTATTTCCTTCTCCAGGATCTTTATGTAGTACGATTCTACAGTCGTCAAGAGGAGGGTAGAAAAGGAGAAGTAAGTTATAATATTTCTGAGCTTTTTTCTTTTTAATTGTTGTTGATAGAAAGTTGTGCCATATACATGTTTTAAGGTGGTGTA

>2165799 14641 135356 16580+,...,680341-
AAGGTAGGAGGTACTCGTGCTAATGGAGGAGCTAATGGTACACCAAACCGACGGCTGTCACTTAATGCTCATCAAAACGGAAGCAGGTCCACAACAAAAGATGGAAAAAAAGACATCAGACCAGTTGCTCCTGTGAATTATGTGGCCATATCAAAAGAAGATGCTGCTTCCCATGTTTCTGGTACCGAACCAATCCCGGCATCACCCTAATAATGAGATCTTCATTATCAACCCTACAATTTCATCTTTGTAGCATGATCAAATACTAGTTACTGCTTTAGGAATTATAATATGGAGTGACAAGTAATTAGAGAGGAACTGTTTTGAGCTGTGTATGTTCAATTTGCCATTTGGAGGTTTTCTCAATACATGTGCCCTTTAATATGAAAATATAGTGCTATTCTTGCCTTTCTCCAAACCCTGGCTCCTCCTATTCATCGGTTTCTT

>2169677 23891 1928391 1298391,…..,739483-
CTAGCTGATCGAGCTGATCGTAGTGAGCTATCGAGCTGACTACTAGCTAGTCGTGATAGCTGATCGAGCTGACTGATGTGCTAGTAGTAGTTTCATGATTTTCTACATCTATAACAATTTGTGTTTTTTTTAAACATCTTCCAGTGTCCTAAGTGTATATTTTTTAACGCAATGTTTGAATACTTTTAGGGTTTACCTTATTTAATTTGATTTTTAATGTGAGTTGTAATCACTGGTGAGCATACTGTTTTTCTTTTGTTCAGTAATATTGCATTTGTAGCTTTTGTATTGCTTAGATATATCACATTAAATCCTTTGTTCAGAAACCCATCCGACAGGGAGTCATAGGTGCCACACTAGTGGTCGAGGATCTAGGATGTCGGAAGGTCAACAATGGGGTAAAACACTAATTTTTTAATTTCTTGTATTTACCAAATTTACTGATTTTGCATTTAGTAGATGGTATATATACTCTTCTACCTTGTACAGTTGATGGTACCTGACTAAATATGTTTTATTTCCTTCTCCAGGATCTTTATGTAGTACGATTCTACAGTCGTCAAGAGGAGGGTAGAAAAGGAGAAGTAAGTTATAATATTTCTGAGCTTTTTTCTTTTTAATTGTTGTTGATAGAAAGTTGTGCCATATACATGTTTTA
等等

现在我想将文件从“>”拆分到下一个,然后将其存储在一个单独的文件中

就像第一个文件一样

>2165320 21411 200802 8894-,...,765644-
TTCG…..GTA    
>2165799 14641 135356 16580+,...,680341-
AAGG….GTTTCTT     
数据

第二个文件将有

>2165320 21411 200802 8894-,...,765644-
TTCG…..GTA    
>2165799 14641 135356 16580+,...,680341-
AAGG….GTTTCTT     

数据等等

看起来您的数据只是换行分隔的,所以您需要做的就是在这些行上循环,并将非空的行写入递增文件:

with open("source.txt") as f:
    counter = 1
    for line in f:
        if not line.strip():
            continue
        with open("out_%03d.txt" % counter, 'w') as out:
            out.write(line)
        counter += 1
这将假定每个组实际上是一条长线(我不清楚真正的格式)

因为您没有对这个文件的实际格式给出太多的解释,这里有另一个选项,以防它们确实是应该在同一个文件中的行之间的换行符。如果“@”是一个新组的可靠指示器,我们可以使用它来指示一个新文件:

with open("source.txt") as f:
    counter = 1
    out = None 

    for line in f:
        if line.lstrip().startswith("@"):
            if out is not None:
                out.close()
            out_name = "out_%03d.txt" % counter
            counter += 1
            out = open(out_name, 'w')

        out.write(line)

    if out is not None:
        out.close()

要将每一空行和一组行写入一个单独的文件,您可以使用:

用法:

$ python split-on-blank.py < input_file.txt
$python split-on-blank.py

如果你经常使用这种格式;考虑使用一个适当的解析器,例如由Pythython函数提供的.< /P>您在您的问题中引用了<代码> >代码>(如FASTA格式),但是该文件没有任何<代码> >代码>:它似乎有<代码> @ /代码>,那么什么不起作用呢?展示你所尝试的。为什么50分钟后,除了对计数器进行一个小调整外,你的代码与我的完全相同?我在说恶作剧!