无法打开文件

时间:2011-05-06 07:21:03

标签: python file-io

我正在创建一个程序来读取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 个答案:

答案 0 :(得分:7)

您需要将文件名指定为字符串文字:

open('seq_fasta.txt')

答案 1 :(得分:2)

您需要引用文件名:open('seq_fasta.txt')

除此之外,您可以选择不同的名称,但file使用此名称会隐藏内置名称。

答案 2 :(得分:0)

您的程序将seq_fasta.txt视为对象标签,类似于在导入数学模块后使用math.pi的方式。

这不会起作用,因为seq_fasta.txt实际上并没有指向任何东西,因此你的错误。你需要做的是在它周围加上引号“seq_fasta.txt”或者创建一个包含它的文本字符串对象,并在open函数中使用该变量名。由于.txt它认为seq_fasta(在函数头中)和seq_fasta.txt(在函数体中)是两个不同的标签。

接下来,你不应该使用文件,因为它是python的一个重要关键字,你最终可能会遇到一些棘手的错误和坏习惯。

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

然后使用它

lines = read_FASTA_strings("seq_fasta.txt")