我正在尝试检查t是否等于“ HTTP / 1.1 200 OK”
import os
t = os.system("curl -Is onepage.com | head -1")
print(t)
但是我从os.system得到的响应是
HTTP/1.1 200 OK
0
我试过了,我不知道如何将那个0带走x = subprocess.check_output(['curl -Is onepage.com | head -1'])
,但这给了我这个错误:
Traceback (most recent call last):
File "teste.py", line 3, in <module>
x = check_output(['curl -Is onepage.com | head -1'])
File "/usr/lib/python3.8/subprocess.py", line 411, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "/usr/lib/python3.8/subprocess.py", line 489, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'curl -Is onepage.com | head -1'
os.system
只返回产生的进程的退出代码,零通常表示成功。
使用时,您有正确的直觉,check_output
因为它可以返回流程的标准输出,并通过引发异常来处理非零退出代码。您的示例失败,因为给定命令需要在shell中运行,这不是默认命令。根据文档:
如果shell为True,则将通过Shell执行指定的命令。如果您主要将Python用于大多数系统外壳程序提供的增强控制流,并且仍希望方便地访问其他外壳程序功能(例如外壳程序管道,文件名通配符,环境变量扩展以及〜扩展到用户的家),则这可能很有用。目录。
以下是预期的工作方式:
import subprocessing
output = subprocess.check_output("curl -Is www.google.com | head -1", shell=True)
print(output)
这给出:
b'HTTP/1.1 200 OK\r\n'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句