【发布时间】:2014-07-31 09:30:22
【问题描述】:
是否可以使用 Python 编程语言检查操作系统的安装时间?主要是对Windows XP平台感兴趣。我想知道python中是否有这样的API或任何技巧。
【问题讨论】:
标签: python windows-xp-sp3
是否可以使用 Python 编程语言检查操作系统的安装时间?主要是对Windows XP平台感兴趣。我想知道python中是否有这样的API或任何技巧。
【问题讨论】:
标签: python windows-xp-sp3
这不是特定于 python 的,但您可以通过 systeminfo 和 find 命令找到它。
>systeminfo | find /i "original"
Original Install Date: 7/27/2011, 3:06:49 PM
如果安装区域设置为英语,则字符串original 应用。
您可以将其封装在 os.system 调用中
>>> os.system("""systeminfo | find /i "original" """)
Original Install Date: 7/27/2011, 3:06:49 PM
【讨论】:
使用 Windows 注册表:
import _winreg as reg
from datetime import datetime
key = reg.OpenKey(reg.HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\Windows NT\CurrentVersion')
secs = reg.QueryValueEx(key, 'InstallDate')[0] # This is stored as a UNIX timestamp
date = datetime.fromtimestamp(secs)
【讨论】:
FileNotFoundError:[WinError 2] The system can not find the file specified
'SOFTWARE\Microsoft\... 之前删除了'r',所以它现在对我有用。我将使用您的解决方案,因为它运行得更快,并且我可以使用变量中的日期来满足我的 Python 程序中的以后需要。感谢您的帮助。另外,我使用的是 Python-3.4.1。所以我不得不按照官方文档的要求将 _winreg 更改为 winreg。
你可以试试
import os
info = os.popen('cmd /k systeminfo | find "Original Install Date"').read();
print info
#Original Install Date: 5/12/2014, 9:06:04 AM
我还没有研究subprocess 包,但它是推荐的选项。 os 会完成这项工作。
【讨论】:
cmd /k systeminfo 的输出并在 Python 中解析它(循环遍历行并输出以“原始安装日期”开头的行)。你可以使用subprocess.check_output获取一个进程的所有输出。
def getInstallDate():
cache = os.popen2("SYSTEMINFO")
info = cache[1].read()
label = "Original Install Date:"
return info.split(label)[-1].split("\n")[0].strip()
【讨论】:
试试:
import platform
print platform.system(), platform.release()
【讨论】:
>>> print platform.system(), platform.release() 输出Windows 7。
>>> print platform.system(), platform.release() Linux 3.11.0-23-generic 没有日期信息