Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用字符串作为子流程的文件输入_Python_File_Subprocess_Pipe - Fatal编程技术网

Python 使用字符串作为子流程的文件输入

Python 使用字符串作为子流程的文件输入,python,file,subprocess,pipe,Python,File,Subprocess,Pipe,我正在尝试通过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, std

我正在尝试通过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)
我知道第二个子流程能够接受多个输入—这是否是我的问题的一个因素


提前感谢您的帮助。

请解释失败的原因。是否发生错误?如果是,请复制并粘贴打印出来的回溯。另外,什么是“消毒剂输入”?在第一种情况下,消毒剂输入是我通过管道输送到子流程的输入。更正:不会发生错误,子流程只是在没有收到任何文件输入的情况下完成。我的意思是,
sanitizer\u input
的形式与
genqueryfile
相比如何?您还没有展示如何创建
sanitizer\u input
,因此很难比较这两个调用的不同之处。我的错-它们都是符合子流程要求的字符串。奇怪的是,如果我在shell中运行第二个子进程而没有任何文件输入,它将返回与我尝试使用子进程模块将字符串输入管道传输到它时相同的输出