首页 > 解决方案 > 为什么我的 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.

标签: pythonpython-3.xfileindentationvalueerror

解决方案


错误消息非常明确且准确:

ValueError:对已关闭文件的 I/O 操作。

您正在一个with块中打开 CSV 文件并基于该文件创建一个新的 CSV 阅读器。但是在with块的末尾,文件被关闭。reading现在指的是链接到已关闭文件连接的 CSV 阅读器。

因此错误。


推荐阅读