Python: На какой ОС я работаю? - PullRequest
503 голосов
/ 05 августа 2008

Что мне нужно посмотреть, чтобы увидеть, нахожусь ли я на Windows или Unix и т. Д.?

Ответы [ 27 ]

2 голосов
/ 04 февраля 2019
import sys
import platform

# return a platform identifier
print(sys.platform)

# return system/os name
print(platform.system())

# print system info
# similar to 'uname' command in unix
print(platform.uname())
2 голосов
/ 29 января 2019

Это решение работает как для python, так и для jython.

модуль os_identify.py :

import platform
import os

# This module contains functions to determine the basic type of
# OS we are running on.
# Contrary to the functions in the `os` and `platform` modules,
# these allow to identify the actual basic OS,
# no matter whether running on the `python` or `jython` interpreter.

def is_linux():
    try:
        platform.linux_distribution()
        return True
    except:
        return False

def is_windows():
    try:
        platform.win32_ver()
        return True
    except:
        return False

def is_mac():
    try:
        platform.mac_ver()
        return True
    except:
        return False

def name():
    if is_linux():
        return "Linux"
    elif is_windows():
        return "Windows"
    elif is_mac():
        return "Mac"
    else:
        return "<unknown>" 

Используйте вот так:

import os_identify

print "My OS: " + os_identify.name()
2 голосов
/ 14 января 2018

Если вы работаете в MacOS X и запускаете platform.system(), вы получаете дарвин потому что macOS X построен на Apple Darwin OS. Darwin является ядром macOS X и по сути является macOS X без графического интерфейса.

1 голос
/ 08 февраля 2019

Вы можете посмотреть код в pyOSinfo, который является частью пакета pip-date , чтобы получить наиболее актуальную информацию об ОС, как видно из вашего дистрибутива Python.

Одна из наиболее распространенных причин, по которой люди хотят проверить свою ОС, - совместимость терминала и наличие определенных системных команд. К сожалению, успех этой проверки в некоторой степени зависит от вашей установки на Python и ОС. Например, uname недоступно в большинстве пакетов Python для Windows. Приведенная выше программа на python покажет вывод наиболее часто используемых встроенных функций, уже предоставленных os, sys, platform, site.

enter image description here

Итак, лучший способ получить только необходимый код - это посмотреть , что в качестве примера. (Думаю, я мог бы просто вставить это здесь, но это не было бы политкорректно.)

1 голос
/ 27 сентября 2018

Как насчет простой реализации Enum, подобной следующей? Нет необходимости во внешних библиотеках!

import platform
from enum import Enum
class OS(Enum):
    def checkPlatform(osName):
        return osName.lower()== platform.system().lower()

    MAC = checkPlatform("darwin")
    LINUX = checkPlatform("linux")
    WINDOWS = checkPlatform("windows")  #I haven't test this one

Просто вы можете получить доступ со значением Enum

if OS.LINUX.value:
    print("Cool it is Linux")

P.S Это python3

1 голос
/ 07 мая 2017

Используйте ключевые слова import os и os.name.

0 голосов
/ 22 мая 2019

Я опаздываю к игре, но, на всякий случай, если это кому-нибудь понадобится, эту функцию я использую для корректировки своего кода, чтобы он работал в Windows, Linux и MacO:

import sys
def get_os(osoptions={'linux':'linux','Windows':'win','macos':'darwin'}):
    '''
    get OS to allow code specifics
    '''   
    opsys = [k for k in osoptions.keys() if sys.platform.lower().find(osoptions[k].lower()) != -1]
    try:
        return opsys[0]
    except:
        return 'unknown_OS'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...