📜  使用Python获取操作系统启动后的时间

📅  最后修改于: 2022-05-13 01:55:01.554000             🧑  作者: Mango

使用Python获取操作系统启动后的时间

正常运行时间是自操作系统启动以来经过的时间。操作系统具有跟踪此时间的离散机制,它们进一步利用这些机制来执行与操作系统相关的任务。这个时间对于某些应用程序特别有用,例如:-

  • 使用跟踪应用程序
  • 备份应用程序
  • 防病毒应用程序

在本文中,我们将了解获取不同操作系统的操作系统启动时间的方法。

在 MAC OS 和 Linux 上获得正常运行时间

对于 Mac OS 和 Linux 用户,该方法非常简单。操作系统终端提供了一个内置命令,允许提取正常运行时间。我们将把命令行方法集成到我们的Python程序中。

Python3
# for using os.popen()
import os
 
# sending the uptime command as an argument to popen()
# and saving the returned result (after truncating the trailing \n)
t = os.popen('uptime -p').read()[:-1]
 
print(t)


Python3
# ctypes required for using GetTickCount64()
import ctypes
 
# getting the library in which GetTickCount64() resides
lib = ctypes.windll.kernel32
 
# calling the function and storing the return value
t = lib.GetTickCount64()
 
# since the time is in milliseconds i.e. 1000 * seconds
# therefore truncating the value
t = int(str(t)[:-3])
 
# extracting hours, minutes, seconds & days from t
# variable (which stores total time in seconds)
mins, sec = divmod(t, 60)
hour, mins = divmod(mins, 60)
days, hour = divmod(hour, 24)
 
# formatting the time in readable form
# (format = x days, HH:MM:SS)
print(f"{days} days, {hour:02}:{mins:02}:{sec:02}")


输出

Up 6 minutes

使用上述代码时需要考虑的事项:

  • 用户没有必要使用os.popen() 。只需要调用命令行解释器,因此可以使用任何其他导致相同结果(子进程等)的方法/函数来代替它。
  • uptime 命令后的-p是为了美化输出,否则输出包含太多不需要的信息。

在 WINDOWS 操作系统上正常运行

对于 Windows,我们将使用 Windows 操作系统中名为gettickcount64()的内置 API函数。此函数检索自系统启动以来经过的毫秒数。

Python3

# ctypes required for using GetTickCount64()
import ctypes
 
# getting the library in which GetTickCount64() resides
lib = ctypes.windll.kernel32
 
# calling the function and storing the return value
t = lib.GetTickCount64()
 
# since the time is in milliseconds i.e. 1000 * seconds
# therefore truncating the value
t = int(str(t)[:-3])
 
# extracting hours, minutes, seconds & days from t
# variable (which stores total time in seconds)
mins, sec = divmod(t, 60)
hour, mins = divmod(mins, 60)
days, hour = divmod(hour, 24)
 
# formatting the time in readable form
# (format = x days, HH:MM:SS)
print(f"{days} days, {hour:02}:{mins:02}:{sec:02}")

输出

0 days, 3:09:04

上述输出表明,该系统运行了 3 小时 9 分 4 秒(0 天)。如果系统使用超过一天(或小时 = 24+),则小时数将回滚到 0,天数将递增。

运行上述代码时需要考虑的事项:

  • 如果在您的操作系统上启用混合睡眠作为关闭机制, gettickcount64()将无法正常工作。
  • 由于包含f 字符串,该程序只能在Python版本 >= 3.x 上运行。要在Python 2 上使用它,请将 f字符串更改为str.format()% 格式。
  • gettickcount64()确实包括休眠或睡眠期间经过的时间。