gpt4 book ai didi

python - 如何从 python 中调用安装在 linux 上的程序?

转载 作者:太空宇宙 更新时间:2023-11-04 09:44:57 25 4
gpt4 key购买 nike

这是我一直在尝试的

def test():
import sys
import subprocess
file1 = open(sys.argv[1],"r") #this is the input to fastacmd
idx = file1.readlines()
outname = idx[0].split("\r\n")[0]
foutname = outname + "_f_output"
astaseq = subprocess.call(["fastacmd","-i", file1, "-o",foutname])
blastresult = subprocess.call(["blastp", "-db", "db1.faa", "-query", foutname, "-out", outname])

但是我被这个捕获了,我无法真正理解它

File "test.py", line 16, in <module>
fastacmd_blastp()
File "test.py", line 11, in test
fastaseq = subprocess.call(["fastacmd","-i", file1, "-o",fastaoutname])
File "/usr/local/lib/python2.7/subprocess.py", line 486, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/local/lib/python2.7/subprocess.py", line 672, in __init__
errread, errwrite)
File "/usr/local/lib/python2.7/subprocess.py", line 1202, in _execute_child
raise child_exception
TypeError: execv() arg 2 must contain only strings

有人可以帮忙吗?谢谢

最佳答案

猜测输入文件应该是文件名 sys.argv[1] 而不是文件的 python 句柄。 ( http://nebc.nerc.ac.uk/bioinformatics/documentation/blast/fastacmd.html )

换句话说,将 astaseq = subprocess.call(["fastacmd","-i", file1, "-o",foutname]) 更改为 astaseq = subprocess.call (["fastacmd","-i", sys.argv[1], "-o",foutname])

关于python - 如何从 python 中调用安装在 linux 上的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17167139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com