subprocess.PIPE を介してファイル入力をパイプしようとしています:
私が試した最初のパイプは、次のように機能しています。
sanitizer_args = ['java', '-Xmx'+args.memory , '-cp', args.jar, 'org.genemania.plugin.apps.GeneSanitizer', '--data', args.dataset, '--organism', args.organism]
p = subprocess.Popen(sanitizer_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
sanitized, errors = p.communicate(input = sanitizer_input)
これは正常に動作します - 2 番目のものは、まったく同じ方法で失敗します:
query_args = ['java', '-Xmx'+args.memory, '-cp', args.jar, 'org.genemania.plugin.apps.QueryRunner', '--data', args.dataset, '--threads', args.threads, '--out', 'scores', '--results', args.results]
genequeryfile = '\n'.join([args.organism, final_querygenes, args.networks, '100', args.weighting])
q = subprocess.Popen(query_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
results, query_errors = q.communicate(input = genequeryfile)
2 番目のサブプロセスが複数の入力を受け取ることができることは知っていますが、これは私の問題の要因ですか?
よろしくお願いします。