我正在尝试使用Python在终端中运行此命令:
./Pascal --set=settings/1_settings.txt --runpathway=on --genescoring=sum --pval=1_snp_values.txt.gz
我需要运行这个脚本180次使用不同的pval每次。因此,通过Python实现自动化可以节省我很多时间。你知道吗
目前我有一个类似这样的Python子进程:
subprocess.call("./Pascal --set=settings/1_settings.txt --runpathway=on --genescoring=sum --pval=1_snp_values.txt.gz")
尽管如此,我还是得到了这个错误:
Traceback (most recent call last):
File "test_automation.py", line 4, in <module>
subprocess.call("./Pascal --set=settings/1_settings.txt --runpathway=on --genescoring=sum --pval=1_snp_values.txt.gz")
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
问题是,当我在terminal中执行完全相同的命令时(在Python代码之外),它可以正常工作。我是不是用错语法了?你知道吗
正在使用^{}
您可以尝试使用此命令运行终端命令,如下所示:
如果这是可行的,那么在
for-loop
中执行以使其运行180
次就很简单了:此外,如果
Pascal
在运行脚本的同一目录中,则默认情况下不需要./
的路径,它将搜索当前工作目录。所以你可以把它改成Pascal set-settings...
正在使用^{}
就我个人而言,我认为使用
os.system
是一个更干净的解决方案,但是您可以使用subprocess.call
通过以下两种方式之一来完成相同的任务:分别从
list
调用Pascal
和其他参数,如:或者只需将
shell
设置为true
,并将整行作为字符串传入,如下所示:希望这对你有用!你知道吗
相关问题 更多 >
编程相关推荐