如何用Python按>node标识拆分氨基酸序列TXT文件为多个独立文件?
原有代码错误点说明
问题1:表头丢失原因
遍历行时,匹配到>开头的行后仅修改了状态标识start,没有将该行内容加入输出缓存op,导致输出文件无表头。若需要将>NODE_xxx统一修改为>NODE,可以在匹配到表头行时对内容做截断处理。
问题2:最后一个节点丢失原因
写文件的逻辑仅在匹配到下一个>开头的行时才会触发,文件遍历结束后,缓存op中存储的最后一个节点内容没有触发写入逻辑,直接被丢弃。
其他冗余问题
使用with open语法操作文件时,上下文管理器会自动关闭文件,不需要手动调用close()方法,冗余的关闭操作可以删除。
如果需要极简的修正版代码,可参考如下逻辑:
cntr = 1 cache = [] with open('你的输入文件路径', 'r') as f: for line in f: line = line.strip('\n') if line.startswith('>NODE'): # 遇到新表头先写旧缓存 if cache: with open(f'Filename{cntr}.txt', 'w') as out_f: out_f.write('\n'.join(cache)) cntr += 1 cache = [] # 新表头加入缓存,统一修改为>NODE cache.append('>NODE') else: cache.append(line) # 遍历结束写最后一个节点 if cache: with open(f'Filename{cntr}.txt', 'w') as out_f: out_f.write('\n'.join(cache))
内容的提问来源于stack exchange,提问作者ZuZu
相关产品推荐
相关产品推荐

