从python调用浮雕程序时出现问题

从python调用浮雕程序时出现问题,python,subprocess,biopython,emboss,Python,Subprocess,Biopython,Emboss,我无法通过Python调用名为sixpack的浮雕程序(通过命令行运行) 我通过Windows7、Python版本3.23、Biopython版本1.59、EMBOSS版本6.4.0.4运行Python。Sixpack用于在所有六个阅读框中翻译DNA序列,并创建两个文件作为输出;识别ORF的序列文件,以及包含蛋白质序列的文件 我可以从命令行成功调用三个必需参数:(-sequence[input file],-outseq[output sequence file],-outfile[protei

我无法通过Python调用名为sixpack的浮雕程序(通过命令行运行)

我通过Windows7、Python版本3.23、Biopython版本1.59、EMBOSS版本6.4.0.4运行Python。Sixpack用于在所有六个阅读框中翻译DNA序列,并创建两个文件作为输出;识别ORF的序列文件,以及包含蛋白质序列的文件

我可以从命令行成功调用三个必需参数:(
-sequence[input file]
-outseq[output sequence file]
-outfile[protein sequence file]
)。我一直在使用subprocess模块来代替os.system,因为我读到它更强大、更通用

下面是我的python代码,它运行时没有错误,但不会生成所需的输出文件

from Bio import SeqIO
import re
import os
import subprocess

infile = input('Full path to EXISTING .fasta file would you like to open: ')
outdir = input('NEW Directory to write outfiles to: ')
os.mkdir(outdir)
for record in SeqIO.parse(infile, "fasta"):

    print("Translating (6-Frame): " + record.id)

    ident=re.sub("\|", "-", record.id)

    print (infile)
    print ("Old record ID: " + record.id)
    print ("New record ID: " + ident)

    subprocess.call (['C:\memboss\sixpack.exe', '-sequence ' + infile, '-outseq ' + outdir + ident + '.sixpack', '-outfile ' + outdir + ident + '.format'])

    print ("Translation of: " + infile + "\nWritten to: " + outdir + ident)

找到了答案。。我使用了错误的语法来调用子进程。这是正确的语法:

subprocess.call (['C:\memboss\sixpack.exe', '-sequence', infile, '-outseq', outdir + ident + '.sixpack', '-outfile', outdir + ident + '.format'])

它会给出一个错误吗?命令是否与您在命令行中键入的命令完全相同?嗯,不完全相同。。。我正在使用(字符串、变量?)如“infle”、“outdir”和“ident”来表示将键入命令行的实际路径和文件名。子流程模块可以处理这些字符串/变量吗?使用变量很好,但我的意思是:如果我将命令从代码(基本上是字符串)复制并粘贴到实际的命令行,它会工作吗?您可能需要为工作文件访问指定完整路径而不是相对路径。命令行:sixpack-sequence c:\python32\multi.fasta-outseq c:\memboss\outseq.sixpack-outfile c:\memboss\outfile.sixpack相对路径和完整路径之间的区别是什么?只要用户在提示时键入完整路径,就会将该完整路径分配给变量“infle”、“outdir”等。。。