无法打开文件:"NameError: 名称 <filename> 未定义
我正在写一个程序,用来读取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')