Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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子流程-返回非零退出状态1_Python_Python 3.x_Unix_Subprocess_Wkhtmltopdf - Fatal编程技术网

Python子流程-返回非零退出状态1

Python子流程-返回非零退出状态1,python,python-3.x,unix,subprocess,wkhtmltopdf,Python,Python 3.x,Unix,Subprocess,Wkhtmltopdf,我想使用python3.6和子流程模块执行这个UNIX命令: cat report_html | ./wkhtmltopdf - test.pdf 我尝试的 import subprocess report_html = "<html><body><h1>Hello World</h1></body></html>" subprocess.run(['cat', report_html, '|', '

我想使用
python3.6
子流程
模块执行这个
UNIX
命令:

 cat report_html | ./wkhtmltopdf - test.pdf
我尝试的

import subprocess
report_html = "<html><body><h1>Hello World</h1></body></html>"
subprocess.run(['cat', report_html, '|', '/tmp/wkhtmltopdf', '-', '/tmp/test.pdf'], check=True)
导入子流程
报告\u html=“你好,世界”
subprocess.run(['cat',report_html',|','/tmp/wkhtmltopf','-','/tmp/test.pdf',check=True)
我收到的错误

{
  "errorMessage": "Command '['cat', '<html><body><h1>Hello World</h1></body></html>', '|', '/tmp/wkhtmltopdf', '-', '/tmp/test.pdf']' returned non-zero exit status 1.",
  "errorType": "CalledProcessError",
  "stackTrace": [
    [
      "/var/task/lambda_function.py",
      30,
      "lambda_handler",
      "subprocess.run(['cat', report_html, '|', '/tmp/wkhtmltopdf', '-', '/tmp/test.pdf'], check=True)"
    ],
    [
      "/var/lang/lib/python3.6/subprocess.py",
      438,
      "run",
      "output=stdout, stderr=stderr)"
    ]
  ]
}
{
“errorMessage:“命令“['cat'、'Hello World'、'|'、'/tmp/wkhtmltopf'、'-'、'/tmp/test.pdf']”返回非零退出状态1。”,
“errorType”:“CalledProcessError”,
“stackTrace”:[
[
“/var/task/lambda_function.py”,
30,
“lambda_handler”,
“subprocess.run(['cat',report_html',|','/tmp/wkhtmltopf','-','/tmp/test.pdf',check=True)”
],
[
“/var/lang/lib/python3.6/subprocess.py”,
438,
“跑”,
“输出=标准输出,标准输出=标准输出”
]
]
}
请指导我如何解决此问题。


如果要在
子流程中使用管道
,则必须使用
shell=True
参数,由于多种原因,这不是最佳解决方案

通常,这是通过运行两个单独的进程并将第一个进程的输出传递到第二个进程来完成的,例如:

cat = subprocess.Popen(['cat', 'report_html'], stdout=subprocess.PIPE)  # Change stdout to PIPE
output = subprocess.check_output(['wkhtmltopdf', '-', 'xxx.pdf'], stdin=cat.stdout)  # Get stdin from cat.stdout