1
所以我有一个python脚本生成一个networkx图并将其导出为.graphml,我希望脚本也能够打开cytoscape,并且加载的网络没有任何工作用户部分。我明白了:使用cmd和Python在Cytoscape中打开一个网络文件
cytoscape.bat -N C:\Somepath\with\a\networkx.graphml
它在我使用它时正常工作。一样:
cd "C:\Program Files\Cytoscape_v3.0.0"
cytoscape.bat
不过,我似乎无法得到任何os.system
或subprocess
正常运行,我现在的配置是:
p = subprocess.Popen("cytoscape.bat", cwd="C:/Program Files/Cytoscape_v3.0.0")
stdout, stderr = p.communicate()
但抛出一个文件未找到的异常。
我一直在阅读其他stackoverflow文章和python文档上运行.bats和做cmd操作,并可以获得基本工作。但是,这似乎更复杂一些,我不确定我要去哪里错了!
按照要求我的例外:
未发现不正确的文件路径例外:
Traceback (most recent call last):
File "CytoScapeExporter.py", line 219, in <module>
p = subprocess.Popen("cytoscape.bat", cwd="\"C:/Program Files/Cytoscape_v3.0
.0\"")
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
startupinfo)
WindowsError: [Error 267] The directory name is invalid
Traceback (most recent call last):
File "CytoScapeExporter.py", line 219, in <module>
p = subprocess.Popen("cytoscape.bat", cwd="C:/Program Files/Cytoscape_v3.0.0
")
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
稍微不同的JVM错误,就会通过这个代码生成:
os.system("\"C:/Program Files/Cytoscape_v3.0.0/cytoscape.bat\"")
Error: missing `server' JVM at `C:\Program Files (x86)\Java\jre7\bin\server\jvm.
dll'.
Please install or use the JRE or JDK that contains these missing components.
C:\Program Files\Cytoscape_v3.0.0
你能为我们提供完整的例外数据? – jsalonen
完成,我添加了一个陌生人JVM错误,什么使用os.system调用产生它 – Darkstarone
您是否在cytoscape.bat目录中运行Popen命令?'cwd'在执行命令之前更改目录,但是[文档](http://docs.python.org/2/library/subprocess .html#popen-constructor)说:搜索可执行文件时不考虑这个目录,所以**你不能指定相对于cwd **的程序路径。 –