Skip to main content
 首页 » 编程设计

python之更改文本文件的内容并制作具有相同格式的新文件

2025年05月04日22mfryf

我有一个包含很多部分的大文本文件。每部分有 4 行,下一部分在上一部分之后立即开始。 每部分的第一行以@开头,第二行是字符的序列,第三行是一个+,第四行也是一个字符序列。

小例子:

@M00872:462:000000000-D47VR:1:1101:15294:1338 1:N:0:ACATCG 
TGCTCGGTGTATGTAAACTTCCGACTTCAACTGTATAGGGATCCAATTTTGACAAAATATTAACGCTTATCGATAAAATTTTGAATTTTGTAACTTGTTTTTGTAATTCTTTAGTTTGTATGTCTGTTGCTATTATGTCTACTATTCTTTCCCCTGCACTGTACCCCCCAATCCCCCCTTTTCTTTTAAAAGTTAACCGATACCGTCGAGATCCGTTCACTAATCGAACGGATCTGTCTCTGTCTCTCTC 
+ 
BAABBADBBBFFGGGGGGGGGGGGGGGHHGHHGH55FB3A3GGH3ADG5FAAFEGHHFFEFHD5AEG1EF511F1?GFH3@BFADGD55F?@GFHFGGFCGG/GHGHHHHHHHDBG4E?FB?BGHHHHHHHHHHHHHHHHHFHHHHHHHHHGHGHGHHHHHFHHHHHGGGGHHHHGGGGHHHHHHHGHGHHHHHHFGHCFGGGHGGGGGGGGFGGEGBFGGGGGGGGGFGGGGFFB9/BFFFFFFFFFF/ 

我想更改每个部分的第 2 行和第 4 行,并制作一个结构相似的新文件(每个部分 4 行)。事实上,我想保留前 65 个字符(第 2 行和第 4 行)并删除其余字符。小示例的预期输出如下所示:

@M00872:462:000000000-D47VR:1:1101:15294:1338 1:N:0:ACATCG 
TGCTCGGTGTATGTAAACTTCCGACTTCAACTGTATAGGGATCCAATTTTGACAAAATATTAACG 
+ 
BAABBADBBBFFGGGGGGGGGGGGGGGHHGHHGH55FB3A3GGH3ADG5FAAFEGHHFFEFHD5A 

我写了下面的代码:

infile = open("file.fastq", "r") 
new_line=[] 
for line_number in len(infile.readlines()): 
    if line_number ==2 or line_number ==4: 
        new_line.append(infile[line_number]) 
 
with open('out_file.fastq', 'w') as f: 
    for item in new_line: 
        f.write("%s\n" % item) 

但它没有返回我想要的。如何修复它以获得预期的输出?

请您参考如下方法:

此代码将实现您想要的 -

from itertools import islice 
with open('bio.txt', 'r') as infile: 
    while True: 
        lines_gen = list(islice(infile, 4)) 
        if not lines_gen: 
            break 
        a,b,c,d = lines_gen 
        b = b[0:65]+'\n' 
        d = d[0:65]+'\n' 
        with open('mod_bio.txt', 'a+') as f: 
            f.write(a+b+c+d) 

它是如何工作的?
正如您提到的,我们首先制作一个一次给出 4 行的生成器。 然后我们将这些行打开为单独的行 a,b,c,d 并执行字符串切片。最终我们加入该字符串并将其写入一个新文件。