पायथन: मैं किस ओएस पर चल रहा हूं?

यह देखने के लिए मुझे क्या देखने की ज़रूरत है कि मैं विंडोज़, यूनिक्स आदि पर हूं या नहीं?

0
जोड़ा संपादित
विचारों: 1
यहां एक संबंधित प्रश्न है: लिनक्स डिस्ट्रो नाम की जांच करें
जोड़ा लेखक blong, स्रोत
विवरण के लिए ( bugs.python.org/issue12326 ) देखें!
जोड़ा लेखक arnkore, स्रोत

19 उत्तर

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

platform.system() का आउटपुट निम्नानुसार है:

  • Linux: Linux
  • Mac: Darwin
  • Windows: Windows

See: platform ? Access to underlying platform?s identifying data

0
जोड़ा
मुझे sys.platform पर प्लेटफ़ॉर्म क्यों पसंद करना चाहिए?
जोड़ा लेखक matth, स्रोत
@matth थोड़ा अधिक लगातार आउटपुट। i.e. platform.system() "win32" के बजाय "Windows" लौटाता है। sys.platform में पाइथन के पुराने संस्करणों पर "linux2" भी शामिल है, जबकि इसमें केवल "linux" नए हैं। platform.system() हमेशा "Linux" लौटा दिया है।
जोड़ा लेखक erb, स्रोत
मैक ओएस एक्स पर, platform.system() हमेशा "डार्विन" वापस आते हैं? या क्या कोई अन्य मामला संभव है?
जोड़ा लेखक baptiste chéné, स्रोत

यहां रिकॉर्ड के लिए मैक पर परिणाम हैं:

>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
0
जोड़ा

आप सभी जानकारी प्राप्त करने के लिए ओएस मॉड्यूल आयात किए बिना केवल मंच मॉड्यूल का उपयोग भी कर सकते हैं।

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

आमतौर पर गायब क्या है ऑपरेटिंग सिस्टम संस्करण है, लेकिन आपको पता होना चाहिए कि क्या आप विंडोज़, लिनक्स या मैक चल रहे हैं या नहीं, इस प्लेटफॉर्म का उपयोग करने के लिए प्लेटफॉर्म का शानदार तरीका है:

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

विंडोज 8 पर दिलचस्प परिणाम:

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

Edit: That's a bug

0
जोड़ा

यदि आप सिग्विन के साथ विंडोज़ पर हैं तो देखें कि os.name posix है।

>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW
0
जोड़ा

ज्योथन के लिए मुझे प्राप्त होने का एकमात्र तरीका मिला है os.name जावा प्रॉपर्टी ( sys , os और के साथ प्रयास किया गया है) प्लेटफ़ॉर्म WinXP पर Jython 2.5.3 के लिए मॉड्यूल):

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
0
जोड़ा

एक नया उत्तर कैसे है:

import psutil
psutil.OSX     #True
psutil.WINDOWS #False
psutil.LINUX   #False 

अगर मैं ओएसएक्स का उपयोग कर रहा था तो यह आउटपुट होगा

0
जोड़ा
psutil मानक lib का हिस्सा नहीं है
जोड़ा लेखक Corey Goldberg, स्रोत
शायद सभी उत्तरों का सबसे सुंदर
जोड़ा लेखक jsphpl, स्रोत

यदि आप उपयोगकर्ता पठनीय डेटा चाहते हैं लेकिन अभी भी विस्तृत हैं, तो आप 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(),
))

The outputs of this script ran on a few different systems is available here: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version

0
जोड़ा

मॉड्यूल प्लेटफ़ॉर्म के साथ उपलब्ध परीक्षणों की जांच करें और अपने सिस्टम के लिए उत्तर प्रिंट करें:

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
0
जोड़ा

मैं यह करता हूँ

import sys
print sys.platform

यहां डॉक्स: sys.platform

आपको जो कुछ भी चाहिए वह शायद sys मॉड्यूल में है।

0
जोड़ा

डांग - लिब्रंडी ने मुझे पंच पर हरा दिया, लेकिन इसका मतलब यह नहीं है कि मैं आपको Vista के सिस्टम सिस्टम प्रदान नहीं कर सकता!

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

... और मैं विश्वास नहीं कर सकता कि किसी ने भी विंडोज 10 के लिए पोस्ट नहीं किया है:

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'
0
जोड़ा
मैंने सोचा होगा कि यह विंडोज 8 से बना हुआ है (बनाम यह एक साफ इंस्टॉल है) और जो कुछ भी पाइथन रजिस्ट्री में दिखता है या जो कुछ भी पीछे छोड़ दिया गया था?
जोड़ा लेखक OJFord, स्रोत
तो, हाँ, मैंने बस platform.release() को अपने विंडोज 10 पर चलाया, और यह निश्चित रूप से मुझे बस '8' दिया । शायद मैं उन्नयन से पहले पायथन स्थापित किया, लेकिन वास्तव में ??
जोड़ा लेखक Codesmith, स्रोत
विंडोज़ पर पायथन के लिए रिलीज लुकअप Win32 एपीआई फ़ंक्शन GetVersionEx को इसके मूल पर उपयोग करने लगता है। उस फ़ंक्शन के बारे में इस Microsoft आलेख के शीर्ष पर नोट प्रासंगिक हो सकते हैं: msdn.microsoft.com/en-us/library/windows/desktop/…
जोड़ा लेखक theferrit32, स्रोत
विंडोज 7: <�कोड> platform.release() '7'
जोड़ा लेखक Hugo, स्रोत

यदि आप पहले ही आयातित sys हैं और आप एक और मॉड्यूल आयात नहीं करना चाहते हैं तो आप sys.platform का भी उपयोग कर सकते हैं

>>> import sys
>>> sys.platform
'linux2'
0
जोड़ा
क्या किसी अन्य मॉड्यूल को आयात करने या न करने के अलावा दृष्टिकोणों पर कोई लाभ है?
जोड़ा लेखक matth, स्रोत
स्कोपिंग मुख्य लाभ है। आप जितना संभव हो उतने वैश्विक वैरिएबल नाम चाहते हैं। जब आपके पास पहले से ही "sys" वैश्विक नाम के रूप में होता है, तो आपको एक और जोड़ना नहीं चाहिए। लेकिन यदि आप अभी तक "sys" का उपयोग नहीं करते हैं, तो "_platform" का उपयोग करके अधिक वर्णनात्मक और अन्य अर्थ के साथ टकराव की संभावना कम हो सकती है।
जोड़ा लेखक sanderd17, स्रोत

मैं डब्लूएलएसटी उपकरण का उपयोग कर रहा हूं जो वेबलॉगिक के साथ आता है, और यह प्लेटफ़ॉर्म पैकेज को लागू नहीं करता है।

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 ( jsk1.5 के साथ विंडोज 2003 पर os.system() के साथ समस्या) (जो मैं नहीं कर सकता, मुझे बॉक्स के बाहर वेबलॉगिक का उपयोग करना होगा), यही वह है जो मैं उपयोग करता हूं:

def iswindows():
  os = java.lang.System.getProperty( "os.name" )
  return "win" in os.lower()
0
जोड़ा

एक ही शिरे में....

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")
0
जोड़ा
is_windows = platform.system ()। निचला ()। startwith ("win") या गलत
जोड़ा लेखक Corey Goldberg, स्रोत
यह समस्याग्रस्त है अगर आप मैक पर हैं क्योंकि platform.system() मैक पर "डार्विन" और "डार्विन" लौटाता है। हल्का ()। ढूंढें ("जीतें") = 3।
जोड़ा लेखक mishaF, स्रोत

/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)
0
जोड़ा
एसओ पर आपका स्वागत है, यहां, यह समझाने का एक अच्छा अभ्यास है कि आपके समाधान का उपयोग क्यों करें और न कि कैसे। इससे आपका उत्तर अधिक मूल्यवान हो जाएगा और आप इसे कैसे करते हैं इसकी बेहतर समझ रखने के लिए आगे पाठक की सहायता करेंगे। मैं यह भी सुझाव देता हूं कि आप हमारे अक्सर पूछे जाने वाले प्रश्न देखें: stackoverflow.com/faq
जोड़ा लेखक ForceMagic, स्रोत
अच्छा जवाब, शायद मूल उत्तर के बराबर भी। लेकिन आप समझा सकते हैं क्यों।
जोड़ा लेखक vgoff, स्रोत

यदि आप कर्नेल संस्करण आदि की तलाश नहीं कर रहे हैं, लेकिन लिनक्स वितरण की तलाश में हैं तो आप निम्न का उपयोग करना चाहेंगे

पायथन 2.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

पायथन 2.4 में

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

जाहिर है, यह केवल तभी काम करेगा जब आप इसे लिनक्स पर चला रहे हों। यदि आप प्लेटफॉर्म पर अधिक सामान्य स्क्रिप्ट चाहते हैं, तो आप इसे अन्य उत्तरों में दिए गए कोड नमूने के साथ मिश्रित कर सकते हैं।

0
जोड़ा

पाइथन का उपयोग कर ओएस के अंतर को अलग करने के लिए नमूना कोड:

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
0
जोड़ा
क्या यह नमूना कोड किसी भी पायथन मॉड्यूल से है? यह एकमात्र उत्तर है जो वास्तव में प्रश्न का उत्तर देता है।
जोड़ा लेखक kon psych, स्रोत
यहाँ एकमात्र सुरुचिपूर्ण जवाब।
जोड़ा लेखक Michael IV, स्रोत
फ़ज़ीर परिणामों के लिए, `_platform.startswith ('linux')
जोड़ा लेखक Klaatu von Schlacker, स्रोत
जैसा कि यहां देखा गया मूल उत्तर stackoverflow.com/a/8220141/3286832
जोड़ा लेखक Yannis, स्रोत

बस पूर्णता के लिए, "ओएस" पर्यावरण चर हर जगह परिभाषित किया प्रतीत होता है। विंडोज एक्सपी / 7/8/10 पर यह "विंडोज_एनटी" पर सेट है। लिनक्स एसयूएसई एसपी 2 पर यह "x86-64 लिनक्स sles11 [2]" पर सेट है। मेरे पास ओएस-एक्स या बीएसडी मशीनों तक पहुंच नहीं है, वहां भी जांचना दिलचस्प होगा।

import os

os_name = os.getenv("OS")
if os_name == "Windows_NT":
    # Windows
elif "linux" in os_name:
    # Linux
elif ...
0
जोड़ा

आयात os और os.name कीवर्ड का उपयोग करें।

0
जोड़ा