gpt4 book ai didi

python - 何时使用 os.name、sys.platform 或 platform.system?

转载 作者:IT老高 更新时间:2023-10-28 21:10:00 25 4
gpt4 key购买 nike

据我所知,Python 有 3 种方法可以找出正在运行的操作系统:

  1. 操作系统名称
  2. sys.platform
  3. platform.system()

了解这些信息在条件导入或使用不同平台的功能时通常很有用(例如,Windows 上的 time.clock()time.time() 上UNIX)。

我的问题是,为什么要使用 3 种不同的方法?什么时候应该使用一种方式而不是另一种方式?哪种方式是“最好的”(最具前瞻性或最不可能意外排除您的程序实际可以在其上运行的特定系统)?

似乎 sys.platformos.name 更具体,让您可以区分 win32cygwin(而不是仅仅 nt),以及来自 darwinlinux2(而不是仅仅 posix)。但如果是这样,那sys.platformplatform.system()的区别是什么?

例如,哪个更好,这个:

import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff

还是这个? :

import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff

现在我将坚持使用 sys.platform,所以这个问题并不是特别紧急,但我会非常感谢您对此进行澄清。

最佳答案

深入了解源代码。

sys.platformos.name 的输出是在编译时确定的。 platform.system() 在运行时确定系统类型。

  • sys.platform 在构建配置期间被指定为编译器定义。
  • os.name 检查某些特定于操作系统的模块是否可用(例如 posixnt、...)
  • platform.system() 实际上运行 uname 和可能的其他几个函数来在运行时确定系统类型。

我的建议:

  • 使用 os.name 来检查它是否是一个 posix 兼容的系统。
  • 使用sys.platform检查是否是linux、cygwin、darwin、atheos等
  • 如果您不相信其他来源,请使用 platform.system()

关于python - 何时使用 os.name、sys.platform 或 platform.system?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4553129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com