我的代码如下:
input_seq = open("input.txt")
sequences = input_seq.read()
output = open("output.txt", "w")
for dna in input_seq:
trimmed = dna[14:]
length = len(trimmed)
output.write(trimmed)
print("processed sequence with length " + str(length))
我的问题是关于第二行“sequences = input_seq.read()”。当我将它包含在我的代码中时,它无法正确执行。当我删除它时,代码可以完美运行。
为什么 .read() 行会导致整个事情无法正常工作。
输入的是
ATTCGATTATAAGCTCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATC
ATTCGATTATAAGCACTGATCGATCGATCGATCGATCGATGCTATCGTCGT
ATTCGATTATAAGCATCGATCACGATCTATCGTACGTATGCATATCGATATCGATCGTAGTC
ATTCGATTATAAGCACTATCGATGATCTAGCTACGATCGTAGCTGTA
ATTCGATTATAAGCACTAGCTAGTCTCGATGCATGATCAGCTTAGCTGATGATGCTATGCA
正确的输出是
TCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATC
ACTGATCGATCGATCGATCGATCGATGCTATCGTCGT
ATCGATCACGATCTATCGTACGTATGCATATCGATATCGATCGTAGTC
ACTATCGATGATCTAGCTACGATCGTAGCTGTA
ACTAGCTAGTCTCGATGCATGATCAGCTTAGCTGATGATGCTATGCA
基本上,目的是删除 input.txt 文件中所有行共有的前 14 个字符。
执行时没有任何错误消息,但实际上什么也没有发生。 output.txt 文件保持空白。
最佳答案
正如评论中提到的,sequences = input_seq.read()
读取变量中的所有文件内容,并且在此语句之后input_seq
指向文件末尾。
您可以使用这两个选项中的任何一个,但不能同时使用这两个选项。
第一个选项
with open('input.txt') as inp_seq, open('output.txt', 'w') as output:
for dna in input_seq:
trimmed = dna[14:]
output.write(trimmed)
print("processed sequence with length " + str(len(trimmed)))
第二个选项 - 首先读取变量中的所有输入文件
with open('input.txt') as inp_seq:
sequence = inp_seq.read()
with open('output.txt', 'w') as output:
for dna in sequence:
trimmed = dna[14:]
output.write(trimmed)
print("processed sequence with length " + str(len(trimmed)))
关于python - 为什么将 .read() 放入我的代码中会导致它不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42049873/