我在显示代码的结果时遇到了问题,尽管我遵循了这里提供的许多答案。你知道吗
如何获得运行我编写的python脚本的结果。它从命令行获取一个目录作为输入,应该返回执行bwa索引脚本的索引文件,但我没有得到任何输出。这里是我的代码:
def bwaIndex(argv):
input_dir = sys.argv[1]
script = 'bwa index'
for infile in glob.glob(os.path.join(input_dir,"*.fasta")):
if infile.endswith('*.fasta'):
subprocess.call(["script, infile"])
if __name__ == '__main__':
bwaIndex(sys.argv)
我不确定我做错了什么,或者在某种程度上我是否是对的。你知道吗
subprocess.call
的参数是一个参数列表,它不会进行任何分词或将其传递给shell(除非您指定shell=True
,但这种方式容易出错,通常不建议这样做)。因此,每一个“单词”或每一件你想作为一个单独的论据处理的东西都应该是列表中它自己的项目。在本例中,需要3个参数bwa
(要运行的可执行文件)、index
(要运行bwa
的命令)和要对其进行操作的文件,该文件存储在infile
。因此,您可能需要执行以下操作:请注意,我将参数更改为
bwaIndex
作为目录,而不是未使用的对sys.argv
的引用,而且由于glob
只会扩展到以fasta
结尾的内容,因此我放弃了该内部检查。然后我让您的参数subprocess.call
成为您想要执行的标记。你知道吗而不是使用子流程调用()您可以使用子流程.Popen()
有关子进程的详细信息,请参见here
相关问题 更多 >
编程相关推荐