【发布时间】:2019-05-12 19:32:25
【问题描述】:
我写了一个脚本来从终端运行 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
它按预期工作,并且在不打开交互式版本的情况下执行命令行版本。
我希望我的脚本能够在终端上执行命令行版本。似乎是什么问题?
谢谢!
【问题讨论】:
-
对代码的小修正:删除 mafft 之前的空格;确保文件名不包含空格(如果包含空格,请不要使用
split命令,而是使用更复杂的内容,例如列表或 shlex。
标签: python command-line terminal subprocess bioinformatics