Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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中将子流程输出管道化到stdin不起作用_Python_Subprocess - Fatal编程技术网

在python中将子流程输出管道化到stdin不起作用

在python中将子流程输出管道化到stdin不起作用,python,subprocess,Python,Subprocess,我想检查文件的格式是否正确 command_process = subprocess.Popen('black -q file_utils.py'.split(' '), stdout=subprocess.PIPE) subprocess.run(['diff', '-q', 'file_utils.py'], stdin=command_process.stdout, stdout=subprocess.PIPE, universal_newlines=True) 我在

我想检查文件的格式是否正确

command_process = subprocess.Popen('black -q
    file_utils.py'.split(' '), stdout=subprocess.PIPE)

subprocess.run(['diff', '-q', 'file_utils.py'], 
    stdin=command_process.stdout, stdout=subprocess.PIPE, universal_newlines=True)
我在上面的命令中得到以下错误

diff: missing operand after `file_utils.py'
diff: Try `diff --help' for more information.
CompletedProcess(args=['diff', '-q', 'file_utils.py'], returncode=2, stdout='')

diff
需要被告知从标准输入读取

subprocess.run(['diff', '-q', 'file_utils.py', '-'], 
stdin=command_process.stdout, stdout=subprocess.PIPE, universal_newlines=True)


取决于您想要的顺序。

不要使用
str.split
;它不遵循shell语法规则。手动构造列表,或使用
shlex.split
subprocess.run(['diff', '-q', '-', 'file_utils.py'], 
stdin=command_process.stdout, stdout=subprocess.PIPE, universal_newlines=True)