मुझे यह देखने के लिए क्या देखने की आवश्यकता है कि मैं विंडोज पर हूं या यूनिक्स, आदि?
मुझे यह देखने के लिए क्या देखने की आवश्यकता है कि मैं विंडोज पर हूं या यूनिक्स, आदि?
जवाबों:
>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Linux'
>>> platform.release()
'2.6.22-15-generic'
इस platform.system()
प्रकार इसका उत्पादन निम्नानुसार है:
Linux
Darwin
Windows
देखें: platform
- अंतर्निहित प्लेटफ़ॉर्म की पहचान डेटा तक पहुंच
platform
से अधिक sys.platform
?
platform.system()
रिटर्न । पाइथन के पुराने संस्करणों में भी शामिल है, जबकि इसमें सिर्फ नए हैं। हमेशा ही वापस लौटा है । "Windows"
"win32"
sys.platform
"linux2"
"linux"
platform.system()
"Linux"
os.uname()
केवल यूनिक्स सिस्टम के लिए मौजूद है। पायथन 3 डॉक्स: docs.python.org/3/library/os.html Availability: recent flavors of Unix.
डांग - लब्रैंडी ने मुझे पंच मारा, लेकिन इसका मतलब यह नहीं है कि मैं आपको विस्टा के लिए सिस्टम परिणाम प्रदान नहीं कर सकता!
>>> 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'
platform.release()
'7'
platform.release()
अपने विंडोज 10 पर भाग गया , और यह निश्चित रूप से बस मुझे दिया '8'
। शायद मैं उन्नयन से पहले अजगर स्थापित किया, लेकिन वास्तव में ??
मैक पर परिणाम के रिकॉर्ड के लिए:
>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
platform.release()
रिटर्न'19.2.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
sys.platform
यदि आप पहले से ही आयात कर चुके हैं sys
और आप किसी अन्य मॉड्यूल को आयात नहीं करना चाहते हैं, तो आप इसका उपयोग भी कर सकते हैं
>>> import sys
>>> sys.platform
'linux2'
यदि आप उपयोगकर्ता पठनीय डेटा चाहते हैं, लेकिन फिर भी विस्तृत है, तो आप 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(),
))
इस स्क्रिप्ट के आउटपुट कुछ अलग सिस्टम (लिनक्स, विंडोज, सोलारिस, मैकओएस) और आर्किटेक्चर (x86, x64, Itanium, पावर पीसी, स्पार्क) पर चलते हैं: https://github.com/hpcugent_easybuild/ wiki / 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
लघु कथा
का उपयोग करें platform.system()
। यह रिटर्न Windows
, Linux
या Darwin
(OSX के लिए)।
लम्बी कहानी
पायथन में ओएस प्राप्त करने के 3 तरीके हैं, प्रत्येक अपने स्वयं के समर्थक और विपक्ष के साथ:
विधि 1
>>> import sys
>>> sys.platform
'win32' # could be 'linux', 'linux2, 'darwin', 'freebsd8' etc
यह कैसे काम करता है ( स्रोत ): आंतरिक रूप से यह ओएस द्वारा परिभाषित ओएस के नाम को प्राप्त करने के लिए ओएस एपीआई कहता है। विभिन्न ओएस-विशिष्ट मूल्यों के लिए यहां देखें ।
प्रो: कोई जादू नहीं, निम्न स्तर।
Con: OS संस्करण निर्भर है, इसलिए सीधे उपयोग करने के लिए सर्वोत्तम नहीं है।
विधि 2
>>> import os
>>> os.name
'nt' # for Linux and Mac it prints 'posix'
यह कैसे काम करता है ( स्रोत ): आंतरिक रूप से यह जांचता है कि अजगर के पास ओएस-विशिष्ट मॉड्यूल हैं जिन्हें पॉज़िक्स या एनटी कहा जाता है।
प्रो: सरल अगर पॉज़िक्स ओएस की जाँच करें
Con: लिनक्स या OSX के बीच कोई अंतर नहीं है।
विधि 3
>>> import platform
>>> platform.system()
'Windows' # for Linux it prints 'Linux', Mac it prints `'Darwin'
यह कैसे काम करता है ( स्रोत ): आंतरिक रूप से यह अंततः आंतरिक ओएस एपीआई को कॉल करेगा, ओएस संस्करण-विशिष्ट नाम प्राप्त करें जैसे 'win32' या 'win16' या 'linux1' और फिर 'विंडोज' या 'लिनक्स' या 'जैसे' और अधिक सामान्य नामों को सामान्य करें। Ur डार्विन ’ने कई उत्तराधिकारी लागू किए।
प्रो: विंडोज, ओएसएक्स और लिनक्स के लिए सबसे अच्छा पोर्टेबल तरीका।
Con: अजगर लोगों को सामान्य होने की स्थिति को अपडेट रखना चाहिए।
सारांश
platform.system()
।posix
या nt
फिर उपयोग करते हैंos.name
।sys.platform
।एक नए उत्तर के बारे में कैसे:
import psutil
psutil.MACOS #True (OSX is deprecated)
psutil.WINDOWS #False
psutil.LINUX #False
यह उत्पादन होगा अगर मैं MACOS का उपयोग कर रहा था
मैंने कुछ और व्यवस्थित व्यवस्थित करना शुरू कर दिया है कि आप विभिन्न मॉड्यूल का उपयोग करके किन मूल्यों की उम्मीद कर सकते हैं (अपने सिस्टम को संपादित करने और जोड़ने के लिए स्वतंत्र महसूस करें):
os.name posix
sys.platform linux
platform.system() Linux
sysconfig.get_platform() linux-x86_64
platform.machine() x86_64
platform.architecture() ('64bit', '')
sys.platform
कर्नेल संस्करण द्वारा प्रत्यय दिया गया है, जैसेlinux2
, बाकी सब कुछ समान हैplatform.architecture() = ('64bit', 'ELF')
(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 के समान हैअपने सिस्टम के साथ तुलना करने के लिए, बस इस स्क्रिप्ट को चलाएं (और अगर लापता हैं तो कृपया परिणाम यहाँ जोड़ दें)
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())
मैं WLST टूल का उपयोग कर रहा हूं जो वेबलॉजिक के साथ आता है, और यह प्लेटफ़ॉर्म पैकेज को लागू नहीं करता है।
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 के साथ समस्या) jdk1.5 के साथ विंडोज़ पर पैचिंग के अलावा ) (जो मैं नहीं कर सकता, मुझे बॉक्स से वेबलॉगिक का उपयोग करना होगा), यह वही है जो मैं उपयोग करता हूं:
def iswindows():
os = java.lang.System.getProperty( "os.name" )
return "win" in os.lower()
/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)
Jython के लिए मैंने पाया ओएस नाम पाने के लिए एक ही रास्ता जाँच करने के लिए है os.name
जावा संपत्ति (के साथ करने की कोशिश की sys
, os
और platform
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
एक ही शिरे में....
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")
यदि आप कर्नेल संस्करण आदि की तलाश नहीं कर रहे हैं, लेकिन लिनक्स वितरण की तलाश में आप निम्नलिखित का उपयोग करना चाह सकते हैं
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
जाहिर है, यह तभी काम करेगा जब आप इसे लिनक्स पर चला रहे हों। यदि आप प्लेटफार्मों में अधिक सामान्य स्क्रिप्ट रखना चाहते हैं, तो आप इसे अन्य उत्तरों में दिए गए कोड नमूनों के साथ मिला सकते हैं।
इसे इस्तेमाल करे:
import os
os.uname()
और आप इसे बना सकते हैं:
info=os.uname()
info[0]
info[1]
os.uname()
विंडोज़ पर भी उपलब्ध नहीं है: docs.python.org/2/library/os.html#os.uname उपलब्धता: यूनिक्स के हाल के स्वाद।
मॉड्यूल प्लेटफ़ॉर्म के साथ उपलब्ध परीक्षणों की जाँच करें और अपने सिस्टम के लिए उत्तर को प्रिंट करें:
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
आप सभी जानकारी प्राप्त करने के लिए ओएस मॉड्यूल आयात किए बिना केवल प्लेटफ़ॉर्म मॉड्यूल का उपयोग कर सकते हैं।
>>> 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]
मुझे पता है कि यह एक पुराना सवाल है, लेकिन मेरा मानना है कि मेरा उत्तर वह है जो कुछ लोगों के लिए मददगार हो सकता है, जो अपने कोड में ओएस का पता लगाने के लिए एक आसान, सरल और समझदार तरीके की तलाश कर रहे हैं। 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
यदि आप macOS X चला रहे हैं और platform.system()
आप को डार्विन मिलता है क्योंकि macOS X को Apple के डार्विन OS पर बनाया गया है। डार्विन macOS X का कर्नेल है और अनिवार्य रूप से GUI के बिना macOS X है।
यह समाधान 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()
निम्नलिखित की तरह एक सरल एनम कार्यान्वयन के बारे में कैसे? बाहरी कामों के लिए कोई ज़रूरत नहीं है!
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 है
आप उस कोड को देख सकते हैं pyOSinfo
जिसमें पिप-डेट पैकेज का हिस्सा है , सबसे प्रासंगिक ओएस जानकारी प्राप्त करने के लिए, जैसा कि आपके पायनियर वितरण से देखा गया है।
सबसे सामान्य कारणों में से एक लोग अपने ओएस की जांच करना चाहते हैं जो टर्मिनल संगतता के लिए है और यदि कुछ सिस्टम कमांड उपलब्ध हैं। दुर्भाग्य से, इस जाँच की सफलता आपके अजगर स्थापना और OS पर कुछ हद तक निर्भर है। उदाहरण के लिए, uname
अधिकांश विंडोज पायथन पैकेज पर उपलब्ध नहीं है। उपरोक्त अजगर कार्यक्रम आपको पहले से ही प्रदान किए गए सबसे अधिक उपयोग किए जाने वाले कार्यों का आउटपुट दिखाएगा os, sys, platform, site
।
तो केवल आवश्यक कोड प्राप्त करने का सबसे अच्छा तरीका एक उदाहरण के रूप में देख रहा है । (मुझे लगता है कि मैं इसे यहाँ पेस्ट कर सकता था, लेकिन यह राजनीतिक रूप से सही नहीं होगा।)
मुझे खेल के लिए देर हो चुकी है, लेकिन अगर किसी को इसकी आवश्यकता है, तो यह एक फ़ंक्शन है जिसका उपयोग मैं अपने कोड पर समायोजन करने के लिए करता हूं, इसलिए यह विंडोज, लिनक्स और मैकओ पर चलता है:
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'