我编写了一个脚本从终端运行mafft模块:
import subprocess
def linsi_MSA(sequnces_file_path):
cmd = ' mafft --maxiterate 1000 --localpair {seqs} > {out}'.format(seqs=sequnces_file_path, out=sequnces_file_path)
subprocess.call(cmd.split(), shell=True)
if __name__ == '__main__':
import logging
logger = logging.getLogger('main')
from sys import argv
if len(argv) < 2:
logger.error('Usage: MSA <sequnces_file_path> ')
exit()
else:
linsi_MSA(*argv[1:])
由于某些原因,在尝试使用以下命令从终端运行脚本时:
python ./MSA.py ./sample.fa
我直接在终端打开mafft交互式版本(请求输入..输出等)
当我试图使用以下命令直接在终端中写入cmd时:
mafft --maxiterate 1000 --localpair sample.fa > sample.fa
它按预期工作,在不打开交互版本的情况下执行命令行版本。你知道吗
我希望我的脚本能够在终端上执行命令行版本。有什么问题吗?你知道吗
谢谢!你知道吗
如果使用
shell=True
,则应传递一个字符串作为参数,而不是列表,例如:文档中没有解释,但我怀疑这与底层库函数的最终调用有关:
相关问题 更多 >
编程相关推荐