如何在python中输入文件并在其上运行异步命令?

时间:2011-10-27 11:22:41

标签: python input subprocess

我正在尝试编写一个要求输入文件的脚本,然后在其上运行一些命令。当我运行脚本时,它询问我的文件名,当我给出文件(例如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 个答案:

答案 0 :(得分:3)

input相当于eval(raw_input(prompt))。因此,您的脚本当前尝试执行的操作是解释您的输入(在您的情况下为“示例”),并执行就好像它是您脚本中的语句一样。对于用户输入(我可以简单地说“为任何输入” - 除非你知道你在做什么),所以总是使用raw_input函数。

因此,要解决此问题,请将input替换为raw_input

filename = raw_input("filename: ")