我写这段python代码是为了检查DNA序列文件。输出将是与此DNA匹配的人的姓名。 此链接包含分配的说明。 https://cs50.harvard.edu/x/2020/psets/6/dna/ 但是当我试图运行代码时,它显示的值是错误的
请有人告诉我代码中的错误。 我对编程一无所知
from sys import argv, exit
import csv
def max_Reptitions_of_substrings(dnaSequences , substring):
arr = [0] * len(dnaSequences)
for i in range(len(dnaSequences) - len(substring), -1, -1):
if dnaSequences[i: i + len(substring)] == substring:
if i + len(substring) > len(dnaSequences) - 1:
arr[i] = 1
else:
arr[i] = 1 + arr[i + len(substring)]
return max(arr)
def print_Matching(reading, newdata):
for i in reading:
human = i[0]
value = [int(digit) for digit in i[1:]]
if value == newdata:
print(human)
return
print("No match")
def main():
if len(argv) != 3:
print("Missing Command line Argument")
exit(1)
with open(argv[1], 'r') as database:
reading = csv.reader(database)
sequences = next(reading)[1:]
with open(argv[2], 'r') as sequenceFilestrong text:
dnaSequences = sequenceFile.read()
newdata = [max_Reptitions_of_substrings(dnaSequences, substr) for substr in sequences]
print_Matching(reading, newdata)
显示的值错误如下所示
Traceback (most recent call last):
File "dna.py", line 36, in <module>
print_Matching(reading, newdata)
File "dna.py", line 15, in print_Matching
for i in reading:
ValueError: I/O operation on closed file.
该错误消息非常明确,具体如下:
您正在
with
块中打开CSV文件,并基于该文件创建新的CSV读取器。但是在with
块的末尾,文件被关闭reading
现在指的是链接到关闭的文件连接的CSV读取器因此出现了错误
此代码块显示csv读取器已关闭
试着看看代码缩进,它在Python中非常重要。带有的第一个应位于功能主内,带有的第二个应位于带有的第一个内。 为什么? 看看代码。在打印匹配中,您使用的是读取csv.reader,它现在尝试使用已关闭的文件作为参数传递
相关问题 更多 >
编程相关推荐