为什么我的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阅读器已关闭。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...