Не могу открыть файл - PullRequest
0 голосов
/ 06 мая 2011

Я создаю программу для чтения файла 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 ]

7 голосов
/ 06 мая 2011

Вам необходимо указать имя файла в виде строкового литерала:

open('seq_fasta.txt')
2 голосов
/ 06 мая 2011

Вам нужно указать имя файла: open('seq_fasta.txt').

Кроме того, вы можете выбрать другое имя, но file, поскольку его использование скрывает встроенное имя.

0 голосов
/ 06 мая 2011

Ваша программа видит 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") 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...