无法打开文件:"NameError: 名称 <filename> 未定义

0 投票
3 回答
2243 浏览
提问于 2025-04-16 17:06

我正在写一个程序,用来读取FASTA文件,并在一些特定的字符,比如'>'等地方进行分割。但是我遇到了一个问题。

程序的部分代码是:

>>> def read_FASTA_strings(seq_fasta):
...     with open(seq_fasta.txt) as file: 
...             return file.read().split('>') 

错误信息是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'seq_fasta' is not defined

我该如何解决这个问题呢?

3 个回答

1

你的程序把seq_fasta.txt当成了一个对象标签,就像你在导入math模块后使用math.pi一样。

这样是不行的,因为seq_fasta.txt实际上并没有指向任何东西,所以你会遇到错误。你需要做的是在它周围加上引号,比如' seq_fasta.txt',或者创建一个包含这个内容的字符串对象,然后在打开文件时使用这个变量名。由于有.txt,程序认为函数头里的seq_fasta和函数体里的seq_fasta.txt是两个不同的标签。

另外,你不应该使用file这个名字,因为它是Python中的一个重要关键词,这样可能会导致一些棘手的错误和不好的习惯。

def read_FASTA_strings(somefile):
    with open(somefile) as textf: 
        return textf.read().split('>')

然后你就可以使用它了

lines = read_FASTA_strings("seq_fasta.txt") 
2

你需要把文件名加上引号,比如这样:open('seq_fasta.txt')

除此之外,你可以选择一个不同的名字,但不要用file这个名字,因为它会覆盖掉一个内置的名字。

8

你需要把文件名写成一个字符串,也就是用引号括起来的文字:

open('seq_fasta.txt')

撰写回答