2014-11-05 3 views
1

Если у меня есть текстовый файл (sequencedata.txt) в папку с именем документов:Передача файла в качестве аргумента функции

/~/documents/sequencedata.txt 

Как бы я определить функцию с именем sequenceinfo что бы подсчитать количество записей, которые начинаются с # в файле вышеуказанного пути и вернуть этот счет с синтаксисом "there are * entries", в котором * - это подсчитанное количество записей?

То, что я до сих пор:

#!/usr/bin/python 
def sequenceinfo(sequencedata): 
    my_file = open("/~/documents/sequencedata.txt") 
    my_dna = my_file.read() 
    ecoliseq = my_dna.count('#') 
    return ecoliseq 

print("There are " + str(ecoliseq) + " sequences") 
+0

Вы можете прочитать файл в списке с помощью '.readlines()'. Затем используйте простой цикл для итерации по списку и найдите элементы, которые '.startswith (" # ")'. Пример вашего входного файла будет очень полезен – Beginner

ответ

3

Есть несколько вещей здесь:

  1. Название ecoliseq не видно снаружи функции sequenceinfo. Следовательно, линия print поднимет NameError, потому что Python не сможет найти ecoliseq. Однако функция ecoliseq возвращается функцией, что означает, что вы можете получить доступ к ее значению, вызвав функцию, а затем распечатать результат.

  2. Вы сделали sequenceinfo аргумент, который никогда не используется. Предполагается ли это путь к файлу? Я собираюсь предположить, что это так, но вы должны удалить его, если нет.

  3. Не серьезная проблема, но вы не закрываете файл, когда закончите с ним. Вы всегда должны управлять и правильно выпускать ресурсы, которые ваша программа использует. Самый простой способ сделать это с файлами - использовать with-statement, чтобы открыть их, что автоматически закроет их для вас.

В целом, ваш код должен выглядеть следующим образом:

#!/usr/bin/python 
def sequenceinfo(path): 
    with open(path) as my_file: 
     my_dna = my_file.read() 
    ecoliseq = my_dna.count('#') 
    return ecoliseq 

print("There are " + str(sequenceinfo("/~/documents/sequencedata.txt")) + " sequences") 

Кроме того, может быть четвертая проблема в том, что my_dna.count('#') возвращает счетчик каждый# в файле. Но вы сказали в своем вопросе, что хотите только подсчитать записи, начинающиеся с #. Если это так, вам нужно исправить эту ошибку.

+0

Спасибо! Это сработало! Ты мужчина ... э ... женщина ... – movietime

Смежные вопросы