使用cmd和Python在Cytoscape中打开网络文件

2024-09-28 21:46:23 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个python脚本,可以生成networkx图形并将其导出为.graphml,我希望脚本也能够在加载网络的情况下打开cytoscape,而无需对用户进行任何操作。我明白:

cytoscape.bat -N C:\Somepath\with\a\networkx.graphml

我用的时候效果很好。正如:

^{pr2}$

但是,我似乎无法使os.system或{}正常运行,我当前的配置是:

p = subprocess.Popen("cytoscape.bat", cwd="C:/Program Files/Cytoscape_v3.0.0")
stdout, stderr = p.communicate()

但是抛出一个文件找不到异常。在

我已经阅读了其他的stackoverflow帖子和python文档中关于running.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

Tags: inpyliblinefilesprogramsystemfile
1条回答
网友
1楼 · 发布于 2024-09-28 21:46:23

来自the documentation

“如果cwd不是None,则子目录在执行之前将被更改为cwd。注意,搜索可执行文件时不考虑此目录,因此不能指定程序相对于cwd的路径。

必须将命令的完整路径传递给子流程.Popen. 在

相关问题 更多 >