1

そのため、networkx グラフを生成して .graphml としてエクスポートする python スクリプトがあり、ユーザー側で何も作業せずにネットワークがロードされた状態でサイトスケープを開くこともできるようにスクリプトが必要です。理解します:

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

私がそれを使用するとき、それはうまくいきます。同様に:

cd "C:\Program Files\Cytoscape_v3.0.0"
cytoscape.bat

ただし、どちらも取得できないか、適切に実行できないようですos.systemsubprocess現在の構成は次のとおりです。

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

しかし、ファイルが見つからないという例外がスローされます。

私は他のstackoverflowの投稿と.batsの実行とcmd操作に関するPythonドキュメントを読んでおり、基本を機能させることができます。ただし、これはやや複雑なようで、どこが間違っているのかわかりません。

リクエストに応じて、例外:

ファイルが見つからず、間違ったパスの例外:

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
4

1 に答える 1

1

ドキュメントから:

「cwd が None でない場合、子の現在のディレクトリは実行前に cwd に変更されます。このディレクトリは実行可能ファイルの検索時に考慮されないため、cwd に対するプログラムの相対パスを指定できないことに注意してください。

コマンドのフル パスを subprocess.Popen に渡す必要があります。

于 2013-07-16T00:21:28.897 に答える