ฉันใช้ระบบปฏิบัติการอะไรอยู่


625

ฉันต้องดูอะไรบ้างเพื่อดูว่าฉันใช้ Windows หรือ Unix หรือไม่


2
ดู ( bugs.python.org/issue12326 ) สำหรับรายละเอียด!
arnkore

2
นี่เป็นคำถามที่เกี่ยวข้อง: ชื่อเช็คลินุกซ์ distro
blong

คำตอบ:


827
>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Linux'
>>> platform.release()
'2.6.22-15-generic'

ผลลัพธ์ของplatform.system()จะเป็นดังนี้:

  • ลินุกซ์: Linux
  • Mac: Darwin
  • ของ windows: Windows

ดู: platform- การเข้าถึงข้อมูลที่ระบุแพลตฟอร์ม


26
ทำไมฉันจะชอบplatformมากกว่าsys.platform?
59

40
@matth เอาต์พุตที่สอดคล้องกันมากขึ้นเล็กน้อย คือplatform.system()ผลตอบแทนแทน"Windows" นอกจากนี้ยังมีใน Python เวอร์ชันเก่าในขณะที่มันมีเพียงใหม่ ได้กลับมาเสมอเพียง "win32"sys.platform"linux2""linux"platform.system()"Linux"
erb

4
สำหรับ mac os X, platform.system () จะส่งคืน "Darwin" เสมอหรือไม่ หรือมีกรณีอื่นที่เป็นไปได้?
baptiste chéné

4
@ baptistechénéฉันรู้ว่านี่มีมานานกว่าหนึ่งปีตั้งแต่คุณถาม แต่ในฐานะที่เป็นความคิดเห็นจะไม่เจ็บฉันจะโพสต์มันต่อไป :) ดังนั้นเหตุผลที่อยู่เบื้องหลังก็เพราะมันแสดงชื่อเคอร์เนล เช่นเดียวกับ Linux (เคอร์เนล) distros มีชื่อมากมาย (Ubuntu, Arch, Fedora และอื่น ๆ ) แต่มันจะแสดงตัวเองเป็นชื่อเคอร์เนล Linux ดาร์วิน (เคอร์เนลที่ใช้ BSD) มีระบบโดยรอบคือ macOS ฉันค่อนข้างมั่นใจว่าแอปเปิ้ลปล่อยดาร์วินเป็นรหัสโอเพนซอร์ส แต่ไม่มี distro อื่น ๆ ที่ใช้งานดาร์วินที่ฉันรู้จัก
Joao Paulo Rabelo

1
@TooroSan os.uname()มีอยู่สำหรับระบบ Unix เท่านั้น The Python 3 docs: docs.python.org/3/library/os.html Availability: recent flavors of Unix.
Irving Moy

175

แดง - lbrandy ทุบตีฉันจนชก แต่นั่นไม่ได้หมายความว่าฉันไม่สามารถให้ผลลัพธ์ระบบสำหรับ Vista กับคุณได้!

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'Vista'

... และฉันไม่อยากจะเชื่อเลยว่าไม่มีใครโพสต์ไว้สำหรับ Windows 10 เลย:

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'

6
Windows 7:platform.release() '7'
Hugo

3
ดังนั้นใช่ฉันเพิ่งรันWindows 10platform.release()ของฉันและมันก็ให้ฉันแน่นอน บางทีฉันอาจติดตั้งไพ ธ อนก่อนจะอัพเกรด แต่จริง ๆ ?? '8'
Codesmith

2
ฉันคิดว่ามันเป็นไปได้ที่คุณจะอัพเกรดจาก Windows 8 (เทียบกับการติดตั้งที่สะอาด) และ Python ค้นหาอะไรในรีจิสทรีหรืออะไรก็ตามที่ถูกทิ้งไว้?
OJFord

2
การค้นหารุ่นสำหรับ python บน Windows ดูเหมือนจะใช้ฟังก์ชัน Win32 api GetVersionEx ที่แกนกลาง หมายเหตุที่ด้านบนของบทความ Microsoft นี้เกี่ยวกับฟังก์ชันนั้นอาจเกี่ยวข้อง: msdn.microsoft.com/en-us/library/windows/desktop/…
theferrit32


95

โค้ดตัวอย่างเพื่อแยกความแตกต่างของระบบปฏิบัติการโดยใช้ไพ ธ อน:

from sys import platform as _platform

if _platform == "linux" or _platform == "linux2":
    # linux
elif _platform == "darwin":
    # MAC OS X
elif _platform == "win32":
    # Windows
elif _platform == "win64":
    # Windows 64-bit

1
นี่คือโค้ดตัวอย่างจากโมดูลไพ ธ อนหรือไม่? นี่เป็นคำตอบเดียวที่จริงแล้วตอบคำถาม
kon Psych

8
เพื่อผลลัพธ์ fuzzier `` _platform.startswith ('linux')
Klaatu von Schlacker

42

คุณสามารถใช้sys.platformหากคุณได้นำเข้าแล้วsysและคุณไม่ต้องการนำเข้าโมดูลอื่น

>>> import sys
>>> sys.platform
'linux2'

วิธีการนี้มีข้อดีหรือไม่นอกจากต้องนำเข้าโมดูลอื่นหรือไม่
59

การกำหนดขอบเขตเป็นข้อได้เปรียบหลัก คุณต้องการชื่อตัวแปรทั่วโลกน้อยที่สุด เมื่อคุณมี "sys" เป็นชื่อสากลคุณไม่ควรเพิ่มอีก แต่ถ้าคุณยังไม่ได้ใช้ "sys" การใช้ "_platform" อาจมีความหมายมากกว่าและมีแนวโน้มที่จะชนกับความหมายอื่นน้อยกว่า
sanderd17

33

หากคุณต้องการข้อมูลที่ผู้ใช้สามารถอ่านได้ แต่ยังมีรายละเอียดอยู่คุณสามารถใช้platform.platform ()

>>> import platform
>>> platform.platform()
'Linux-3.3.0-8.fc16.x86_64-x86_64-with-fedora-16-Verne'

นี่คือการโทรที่คุณสามารถทำได้เพื่อระบุว่าคุณอยู่ที่ไหน

import platform
import sys

def linux_distribution():
  try:
    return platform.linux_distribution()
  except:
    return "N/A"

print("""Python version: %s
dist: %s
linux_distribution: %s
system: %s
machine: %s
platform: %s
uname: %s
version: %s
mac_ver: %s
""" % (
sys.version.split('\n'),
str(platform.dist()),
linux_distribution(),
platform.system(),
platform.machine(),
platform.platform(),
platform.uname(),
platform.version(),
platform.mac_ver(),
))

ผลลัพธ์ของสคริปต์นี้ทำงานบนระบบที่แตกต่างกันไม่กี่ (Linux, Windows, Solaris, MacOS) และสถาปัตยกรรม (x86, x64, Itanium, power pc, sparc) มีให้ที่นี่: https://github.com/hpcugent/easybuild/ วิกิพีเดีย / OS_flavor_name_version

ตัวอย่างเช่นเซิร์ฟเวอร์ Ubuntu 12.04 ให้:

Python version: ['2.6.5 (r265:79063, Oct  1 2012, 22:04:36) ', '[GCC 4.4.3]']
dist: ('Ubuntu', '10.04', 'lucid')
linux_distribution: ('Ubuntu', '10.04', 'lucid')
system: Linux
machine: x86_64
platform: Linux-2.6.32-32-server-x86_64-with-Ubuntu-10.04-lucid
uname: ('Linux', 'xxx', '2.6.32-32-server', '#62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011', 'x86_64', '')
version: #62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011
mac_ver: ('', ('', '', ''), '')

DeprecationWarning: dist() and linux_distribution() functions are deprecated in Python 3.5
บอริส

19

เรื่องสั้น

platform.system()ใช้ ก็จะส่งกลับWindows, LinuxหรือDarwin(สำหรับ OSX)

เรื่องยาว

มี 3 วิธีในการรับระบบปฏิบัติการใน Python โดยแต่ละโปรแกรมมีข้อดีและข้อเสียดังนี้

วิธีที่ 1

>>> import sys
>>> sys.platform
'win32'  # could be 'linux', 'linux2, 'darwin', 'freebsd8' etc

วิธีการทำงาน ( แหล่งที่มา ): ภายในจะเรียก OS APIs เพื่อรับชื่อของระบบปฏิบัติการตามที่กำหนดโดยระบบปฏิบัติการ ดูที่นี่สำหรับค่าเฉพาะระบบปฏิบัติการต่างๆ

Pro: ไม่มีเวทย์มนตร์ระดับต่ำ

คอนดิชั่น: ขึ้นอยู่กับเวอร์ชั่นของระบบปฏิบัติการ, ดังนั้นจึงไม่ควรใช้โดยตรง.

วิธีที่ 2

>>> import os
>>> os.name
'nt'  # for Linux and Mac it prints 'posix'

วิธีการทำงาน ( แหล่งที่มา ): ภายในตรวจสอบว่าหลามมีโมดูลเฉพาะระบบปฏิบัติการที่เรียกว่า posix หรือ nt

Pro: ง่ายต่อการตรวจสอบว่าระบบปฏิบัติการ posix

คอนดิชั่น: ไม่มีความแตกต่างระหว่าง Linux หรือ OSX

วิธีที่ 3

>>> import platform
>>> platform.system()
'Windows' # for Linux it prints 'Linux', Mac it prints `'Darwin'

วิธีการทำงาน ( แหล่งที่มา ): ภายในที่สุดแล้วจะเรียกใช้ API ของระบบภายในรับชื่อเฉพาะเวอร์ชันของระบบปฏิบัติการเช่น 'win32' หรือ 'win16' หรือ 'linux1' จากนั้นปรับมาตรฐานให้เป็นชื่อทั่วไปเช่น 'Windows' หรือ 'Linux' หรือ 'ดาร์วิน' โดยใช้ฮิวริสติกหลายแบบ

Pro: วิธีพกพาที่ดีที่สุดสำหรับ Windows, OSX และ Linux

คอนดิชั่น: งูหลามคนจะต้องรักษามาตรฐานการแก้ปัญหาให้ทันสมัยอยู่เสมอ

สรุป

  • หากคุณต้องการตรวจสอบว่าระบบปฏิบัติการ Windows หรือ Linux หรือ OSX platform.system()แล้ววิธีที่เชื่อถือได้มากที่สุดคือ
  • หากคุณต้องการโทรเฉพาะระบบปฏิบัติการ แต่ผ่านโมดูล Python ในตัวposixหรือntใช้os.nameแล้วการใช้งาน
  • ถ้าคุณต้องการที่จะได้รับชื่อ OS ดิบเป็นที่จัดทำโดย OS sys.platformตัวเองแล้วใช้

มากสำหรับ "ควรมีวิธีหนึ่ง (และดีกว่าเพียงคนเดียว) ในการทำสิ่งต่าง ๆ " อย่างไรก็ตามฉันเชื่อว่านี่เป็นคำตอบที่ถูก คุณจะต้องเปรียบเทียบกับชื่อระบบปฏิบัติการชื่อ แต่มันไม่ใช่ปัญหาดังกล่าวและจะพกพาได้มากกว่า
vincent-lg

16

คำตอบใหม่:

import psutil
psutil.MACOS   #True (OSX is deprecated)
psutil.WINDOWS #False
psutil.LINUX   #False 

นี่จะเป็นผลลัพธ์ถ้าฉันใช้ MACOS


7
psutil ไม่ได้เป็นส่วนหนึ่งของ lib มาตรฐาน
Corey Goldberg

14

ฉันเริ่มรายการที่เป็นระบบขึ้นเล็กน้อยเกี่ยวกับค่าที่คุณคาดหวังจากการใช้โมดูลต่าง ๆ (รู้สึกฟรีเพื่อแก้ไขและเพิ่มระบบของคุณ):

Linux (64 บิต) + WSL

os.name                     posix
sys.platform                linux
platform.system()           Linux
sysconfig.get_platform()    linux-x86_64
platform.machine()          x86_64
platform.architecture()     ('64bit', '')
  • พยายามกับ Archlinux และมิ้นต์ได้ผลลัพธ์เดียวกัน
  • บน python2 ต่อท้ายsys.platformด้วยเคอร์เนลเวอร์ชั่นเช่นlinux2ทุกอย่างอื่นยังคงเหมือนเดิม
  • เอาต์พุตเดียวกันบน Windows Subsystem สำหรับ Linux (ทดลองกับ ubuntu 18.04 LTS) ยกเว้น platform.architecture() = ('64bit', 'ELF')

WINDOWS (64 บิต)

(ด้วยคอลัมน์ 32 บิตที่ทำงานในระบบย่อย 32 บิต)

official python installer   64bit                     32bit
-------------------------   -----                     -----
os.name                     nt                        nt
sys.platform                win32                     win32
platform.system()           Windows                   Windows
sysconfig.get_platform()    win-amd64                 win32
platform.machine()          AMD64                     AMD64
platform.architecture()     ('64bit', 'WindowsPE')    ('64bit', 'WindowsPE')

msys2                       64bit                     32bit
-----                       -----                     -----
os.name                     posix                     posix
sys.platform                msys                      msys
platform.system()           MSYS_NT-10.0              MSYS_NT-10.0-WOW
sysconfig.get_platform()    msys-2.11.2-x86_64        msys-2.11.2-i686
platform.machine()          x86_64                    i686
platform.architecture()     ('64bit', 'WindowsPE')    ('32bit', 'WindowsPE')

msys2                       mingw-w64-x86_64-python3  mingw-w64-i686-python3
-----                       ------------------------  ----------------------
os.name                     nt                        nt
sys.platform                win32                     win32
platform.system()           Windows                   Windows
sysconfig.get_platform()    mingw                     mingw
platform.machine()          AMD64                     AMD64
platform.architecture()     ('64bit', 'WindowsPE')    ('32bit', 'WindowsPE')

cygwin                      64bit                     32bit
------                      -----                     -----
os.name                     posix                     posix
sys.platform                cygwin                    cygwin
platform.system()           CYGWIN_NT-10.0            CYGWIN_NT-10.0-WOW
sysconfig.get_platform()    cygwin-3.0.1-x86_64       cygwin-3.0.1-i686
platform.machine()          x86_64                    i686
platform.architecture()     ('64bit', 'WindowsPE')    ('32bit', 'WindowsPE')

ข้อสังเกตบางส่วน:

  • นอกจากนี้ยังมีdistutils.util.get_platform()ซึ่งเหมือนกับ `sysconfig.get_platform
  • อนาคอนดาบน windows เหมือนกับตัวติดตั้ง python windows อย่างเป็นทางการ
  • ฉันไม่มี Mac หรือระบบ 32 บิตที่แท้จริงและไม่ได้รับแรงบันดาลใจให้ออนไลน์

หากต้องการเปรียบเทียบกับระบบของคุณให้เรียกใช้สคริปต์นี้ (และโปรดผนวกผลลัพธ์ที่นี่หากไม่มี :)

from __future__ import print_function
import os
import sys
import platform
import sysconfig

print("os.name                      ",  os.name)
print("sys.platform                 ",  sys.platform)
print("platform.system()            ",  platform.system())
print("sysconfig.get_platform()     ",  sysconfig.get_platform())
print("platform.machine()           ",  platform.machine())
print("platform.architecture()      ",  platform.architecture())

11

ฉันใช้เครื่องมือ WLST ที่มาพร้อมกับ weblogic และไม่ได้ใช้แพ็คเกจแพกเกจ

wls:/offline> import os
wls:/offline> print os.name
java 
wls:/offline> import sys
wls:/offline> print sys.platform
'java1.5.0_11'

นอกเหนือจากการแก้ไขระบบjavaos.py ( ปัญหากับ os.system () บน windows 2003 ด้วย jdk1.5 ) (ซึ่งฉันทำไม่ได้ฉันต้องใช้เว็บบล็อกนอกกรอบ) นี่คือสิ่งที่ฉันใช้:

def iswindows():
  os = java.lang.System.getProperty( "os.name" )
  return "win" in os.lower()

9

/usr/bin/python3.2

def cls():
    from subprocess import call
    from platform import system

    os = system()
    if os == 'Linux':
        call('clear', shell = True)
    elif os == 'Windows':
        call('cls', shell = True)

3
ยินดีต้อนรับสู่ SO ที่นี่เป็นแนวปฏิบัติที่ดีที่จะอธิบายว่าทำไมต้องใช้โซลูชันของคุณไม่ใช่แค่วิธีการ นั่นจะทำให้คำตอบของคุณมีค่ามากขึ้นและช่วยให้ผู้อ่านมีความเข้าใจมากขึ้นว่าคุณทำได้อย่างไร ฉันยังขอแนะนำให้คุณได้ดูในคำถามที่พบบ่อยของเรา: stackoverflow.com/faq
ForceMagic

คำตอบที่ดีอาจถึงกับคำตอบเดิม แต่คุณสามารถอธิบายได้ว่าทำไม
vgoff

9

สำหรับ Jython วิธีเดียวที่จะได้รับชื่อ OS ผมพบคือการตรวจสอบos.nameคุณสมบัติ Java (พยายามกับsys, osและplatformโมดูลสำหรับ Jython 2.5.3 บน WinXP):

def get_os_platform():
    """return platform name, but for Jython it uses os.name Java property"""
    ver = sys.platform.lower()
    if ver.startswith('java'):
        import java.lang
        ver = java.lang.System.getProperty("os.name").lower()
    print('platform: %s' % (ver))
    return ver

นอกจากนี้คุณยังสามารถเรียก "platform.java_ver ()" เพื่อดึงข้อมูลระบบปฏิบัติการใน Jython
DocOc


7

ระวังถ้าคุณอยู่ใน Windows ด้วย Cygwin ที่เป็นos.nameposix

>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW

6

ในหลอดเลือดดำเดียวกัน ....

import platform
is_windows=(platform.system().lower().find("win") > -1)

if(is_windows): lv_dll=LV_dll("my_so_dll.dll")
else:           lv_dll=LV_dll("./my_so_dll.so")

9
นี่เป็นปัญหาถ้าคุณใช้ Mac ตั้งแต่ platform.system () ส่งคืน "Darwin" บน Mac และ "Darwin" .lower (). find ("win") = 3.
mishaF

is_windows = platform.system (). lower (). startswith ("win") หรือ False
Corey Goldberg

6

หากคุณไม่ได้กำลังมองหารุ่นเคอร์เนล ฯลฯ แต่กำลังมองหาการกระจาย linux คุณอาจต้องการใช้ต่อไปนี้

ใน python2.6 +

>>> import platform
>>> print platform.linux_distribution()
('CentOS Linux', '6.0', 'Final')
>>> print platform.linux_distribution()[0]
CentOS Linux
>>> print platform.linux_distribution()[1]
6.0

ใน python2.4

>>> import platform
>>> print platform.dist()
('centos', '6.0', 'Final')
>>> print platform.dist()[0]
centos
>>> print platform.dist()[1]
6.0

เห็นได้ชัดว่านี่จะทำงานได้ก็ต่อเมื่อคุณใช้งานบน linux หากคุณต้องการให้มีสคริปต์ทั่วไปทั่วทั้งแพลตฟอร์มคุณสามารถผสมกับตัวอย่างโค้ดที่ให้ไว้ในคำตอบอื่น ๆ


5

ลองนี้:

import os

os.uname()

และคุณสามารถทำได้:

info=os.uname()
info[0]
info[1]

1
ยังos.uname()ไม่มีให้ใน windows: docs.python.org/2/library/os.html#os.uname ความพร้อมใช้งาน: Unix รสชาติล่าสุด
ccpizza

4

ตรวจสอบการทดสอบที่มีด้วยแพลตฟอร์มโมดูลและพิมพ์คำตอบสำหรับระบบของคุณ:

import platform

print dir(platform)

for x in dir(platform):
    if x[0].isalnum():
        try:
            result = getattr(platform, x)()
            print "platform."+x+": "+result
        except TypeError:
            continue

4

คุณสามารถใช้โมดูลแพลตฟอร์มเท่านั้นโดยไม่ต้องนำเข้าโมดูล os เพื่อรับข้อมูลทั้งหมด

>>> import platform
>>> platform.os.name
'posix'
>>> platform.uname()
('Darwin', 'mainframe.local', '15.3.0', 'Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64', 'x86_64', 'i386')

เค้าโครงที่ดีและเป็นระเบียบเรียบร้อยสำหรับการรายงานสามารถทำได้โดยใช้บรรทัดนี้:

for i in zip(['system','node','release','version','machine','processor'],platform.uname()):print i[0],':',i[1]

ที่ให้ผลลัพธ์นี้:

system : Darwin
node : mainframe.local
release : 15.3.0
version : Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64
machine : x86_64
processor : i386

สิ่งที่ขาดหายไปมักจะเป็นรุ่นของระบบปฏิบัติการ แต่คุณควรรู้ว่าคุณใช้ windows, linux หรือ mac หรือไม่และเป็นวิธีที่แพลตฟอร์มที่ไม่พึงประสงค์คือการใช้การทดสอบนี้:

In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]:
   ....:     if i[0]:
   ....:         print 'Version: ',i[0]

4

ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันเชื่อว่าคำตอบของฉันคือคำตอบที่อาจเป็นประโยชน์กับบางคนที่กำลังมองหาวิธีที่ง่ายและเข้าใจได้ง่ายในการตรวจสอบระบบปฏิบัติการในรหัสของพวกเขา ทดสอบกับ python3.7

from sys import platform


class UnsupportedPlatform(Exception):
    pass


if "linux" in platform:
    print("linux")
elif "darwin" in platform:
    print("mac")
elif "win" in platform:
    print("windows")
else:
    raise UnsupportedPlatform

2

หากคุณกำลังเรียกใช้ macOS X และเรียกใช้platform.system()คุณจะได้รับดาร์วินเพราะ macOS X สร้างขึ้นในระบบปฏิบัติการดาร์วินของ Apple ดาร์วินเป็นเคอร์เนลของ macOS X และเป็นพื้นฐานของ macOS X ที่ไม่มี GUI


2

วิธีนี้ใช้ได้ทั้ง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()

1

การใช้ Enum แบบง่าย ๆ เป็นอย่างไรต่อไปนี้ ไม่จำเป็นต้องใช้ libs ภายนอก!

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")

PS มันคือ python3


1

คุณสามารถดูรหัสpyOSinfoซึ่งเป็นส่วนหนึ่งของแพ็คเกจวันที่เพื่อรับข้อมูลระบบปฏิบัติการที่เกี่ยวข้องมากที่สุดเท่าที่เห็นจากการแจกจ่าย Python ของคุณ

หนึ่งในสาเหตุที่พบบ่อยที่สุดที่ผู้คนต้องการตรวจสอบระบบปฏิบัติการของพวกเขาคือความเข้ากันได้ของเทอร์มินัลและหากมีคำสั่งของระบบที่พร้อมใช้งาน น่าเสียดายที่ความสำเร็จของการตรวจสอบนี้ขึ้นอยู่กับการติดตั้งหลามและระบบปฏิบัติการของคุณ ตัวอย่างเช่นunameไม่สามารถใช้ได้กับแพ็คเกจงูหลาม Windows ส่วนใหญ่ os, sys, platform, siteโปรแกรมหลามดังกล่าวข้างต้นจะแสดงผลลัพธ์ของการใช้กันมากที่สุดในตัวฟังก์ชั่นให้แล้วโดย

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นวิธีที่ดีที่สุดที่จะได้รับเฉพาะรหัสที่สำคัญกำลังมองหาที่ที่เป็นตัวอย่าง (ฉันเดาว่าฉันสามารถวางที่นี่ได้ แต่นั่นอาจไม่ถูกต้องทางการเมือง)


1

ฉันมาสายเกม แต่ในกรณีที่ใครต้องการมันเป็นฟังก์ชั่นที่ฉันใช้ในการปรับรหัสของฉันเพื่อให้มันทำงานบน Windows, Linux และ MacOs:

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'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.