如何解决为什么我的python代码显示值错误?
我正在编写此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.
解决方法
该错误消息非常明显且清晰可见:
ValueError:已关闭文件的I / O操作。
您正在with
块中打开CSV文件,并基于该文件创建新的CSV阅读器。但是在with
块的末尾,文件已关闭。 reading
现在是指链接到封闭文件连接的CSV阅读器。
出现错误。
,尝试查看代码缩进,这在Python中非常重要。第一个 with 应该在 function main 内部,第二个 with 应该在第一个 with 内部。 为什么? 只看代码。在打印匹配中,您使用的是 reading csv.reader,它现在尝试使用作为参数传递的已经关闭的文件。
,with open(argv[1],'r') as database:
reading = csv.reader(database)
sequences = next(reading)[1:]
此代码块显示csv阅读器已关闭。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。