Как я могу ввести файл и выполнить асинхронную команду на нем в Python? - PullRequest
1 голос
/ 27 октября 2011

Я пытаюсь написать скрипт, который запрашивает входной файл, а затем запускает на нем какую-то команду.когда я запускаю скрипт, он спрашивает у меня имя файла и когда я даю файл (например, example.bam), я получаю эту ошибку:

NameError: имя 'example.bam' не определено

Я пробовал много вещей, но не мог это исправить.Может кто-нибудь сказать мне, что не так?

Это моя команда:

from subprocess import call
filename = input ("filename: ");
with open (filename, "r") as a:
    for command in ("samtools tview 'a' /chicken/chick_build2.1_unmasked.fa",):
        call(command, shell=True)

Это короткая версия моей команды: она должна делать гораздо больше вещей.Я также думаю ввести 4-6 файлов одновременно (возможно, эта информация поможет уточнить мои намерения).

1 Ответ

3 голосов
/ 27 октября 2011

input эквивалентно eval(raw_input(prompt)). Итак, что ваш сценарий в настоящее время пытается сделать, это интерпретировать ваш ввод («пример», в вашем случае) и выполнить, как если бы это был оператор в вашем сценарии. Для пользовательского ввода (и я могу просто сказать «для любого ввода» - если вы не знаете, что делаете), всегда используйте функцию raw_input.

Итак, чтобы решить эту проблему, замените input на raw_input:

filename = raw_input("filename: ")
...