使用string作为子进程的文件输入

时间:2013-06-24 20:39:52

标签: python file subprocess pipe bytestring

我正在尝试通过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)

哪种方法很好 - 第二种方式完全相同,但却失败了:

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)

我知道第二个子进程能够接受多个输入 - 这是否会影响我的问题呢?

提前感谢您的帮助。

0 个答案:

没有答案