【发布时间】:2017-09-11 14:10:31
【问题描述】:
我暂时更改了我的代理配置以在cmd.exe 上引发以下错误...
C:\Users\su79e\abs_engine>C:/ProgramData/Anaconda3/Scripts/conda create --name test python=3.5
Fetching package metadata ...
# After 5~10 seconds
CondaHTTPError: HTTP None None for url <https://repo.continuum.io/pkgs/free/win-64/repodata.json.bz2>
Elapsed: None
An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.
ProxyError(MaxRetryError("HTTPSConnectionPool(host='repo.continuum.io', port=443): Max retries exceeded with url: /pkgs/free/win-64/repodata.json.bz2 (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x000001DBCA650AC8>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed',)))",),)
那很好。另一方面,我想使用 subprocess 模块来捕获这些错误消息,如下面的代码。
test.py
with subprocess.Popen("C:/ProgramData/Anaconda3/Scripts/conda create -y --name test python=3.5",
universal_newlines=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) as proc:
# out, err = proc.communicate()
# logger.info(out)
# logger.info(err)
while proc.poll() is None:
logger.info(proc.stdout.readline())
# logger.info(proc.stderr.readline())
虽然我可以在运行test.py 时“看到”cmd.exe 上的完整消息,
但记录器只捕获如下......
test.py:104 - INFO - 2017-09-11 22:16:29,858 - Fetching package metadata ...
test.py:104 - INFO - 2017-09-11 22:16:29,858 -
尽管有 while 循环,它只在错误之前捕获消息。我错过了什么吗?我已经在 Stackoverflow 上检查了很多答案,this 似乎与我的问题非常接近,但没有运气。任何建议都会对我很有帮助。提前谢谢你。
【问题讨论】:
标签: python python-3.x subprocess