【发布时间】:2016-02-21 19:32:17
【问题描述】:
我想记录pip show 命令的返回,并确定包的版本(例如pytest)。如果存在另一个日志,则应将其覆盖。
所以我决定将pip show 命令写入一个文件,然后以读取模式重新打开它来解析它。如果我没有在for 循环行上放置断点,第二个open 不会读取任何内容。
我使用两个不同的文件名,甚至在实际阅读之前都使用seek(0)...
# checking the installed package version using pip. Writing to file for further use
with open("lib_install.log", "w") as pip_log:
subprocess.Popen(["pip", "show", "pytest"], stdout=pip_log, stderr=pip_log)
# Lets retrieve the log and parse for the version
current_version = "not installed properly"
with open("lib_install.log", "r") as pip_log_read:
pip_log_read.seek(0)
for line in pip_log_read.readlines():
if "Version: " in line:
current_version = line.strip("Version: ")
break
你们有什么想法吗?
顺便说一句,如果你知道我如何在没有Popen 的情况下使用pip,我会全力以赴。
【问题讨论】:
标签: python python-2.7 pip popen