আমি কোন ওএস চালাচ্ছি?


625

আমি উইন্ডোজ বা ইউনিক্সে আছি কিনা তা দেখার জন্য আমার কী দেখার প্রয়োজন?


2
বিস্তারিত জানার জন্য ( bugs.python.org/issue12326 ) দেখুন!
আরঙ্কোর

2
এখানে সম্পর্কিত প্রশ্ন: লিনাক্স ডিস্ট্রো নাম পরীক্ষা করুন
ব্লুং

উত্তর:


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

এর ফলাফল platform.system()নিম্নরূপ:

  • লিনাক্স: Linux
  • ম্যাক: Darwin
  • উইন্ডোজ: Windows

দেখুন: platform- অন্তর্নিহিত প্ল্যাটফর্মের সনাক্তকারী ডেটাতে অ্যাক্সেস


26
আমি কেন platformবেশি পছন্দ করব sys.platform?
ম্যাথ

40
@ মাইথ কিছুটা সামঞ্জস্যপূর্ণ আউটপুট। অর্থাত্ পরিবর্তে platform.system()ফিরে । এছাড়াও রয়েছে পাইথন পুরোনো সংস্করণের উপর যখন এটি শুধু রয়েছে নতুন বেশী হয়। সর্বদা ঠিক ফিরে এসেছে । "Windows""win32"sys.platform"linux2""linux"platform.system()"Linux"
erb

4
ম্যাক ওএস এক্স-এ, প্ল্যাটফর্ম.সিস্টেম () সর্বদা "ডারউইন" ফেরত দেয়? বা অন্য কোন সম্ভাবনা আছে?
ব্যাপটিস্ট চ্যানেল

4
@ ব্যাপটিস্টেকেন, আমি জানি যে আপনি জিজ্ঞাসা করেছেন যেহেতু এটি এক বছরেরও বেশি সময় হয়েছে, তবে একটি মন্তব্য হিসাবে কোনও ক্ষতি হবে না, আমি এটি যাইহোক পোস্ট করব :) সুতরাং, এর পিছনে কারণ এটি কার্নেলের নাম দেখায় কারণ। লিনাক্স (কর্নেল) ডিস্ট্রোসের একইভাবে অনেক নাম রয়েছে (অন্যদের মধ্যে উবুন্টু, আর্চ, ফেডোরা) তবে এটি কার্নেলের নাম লিনাক্স হিসাবে উপস্থিত হবে। ডারউইন (একটি বিএসডি ভিত্তিক কার্নেল) এর চারপাশের সিস্টেম ম্যাকোস রয়েছে। আমি নিশ্চিত যে আপেল ডারউইনকে একটি মুক্ত উত্স কোড হিসাবে প্রকাশ করেছিল, তবে ডারউইনের উপর আর কোনও ডিস্ট্রো নেই যা আমি জানি।
জোও পাওলো রাবেলো

1
@ টুরোসান os.uname()কেবল ইউনিক্স সিস্টেমের জন্য বিদ্যমান। পাইথন 3 ডক্স: docs.python.org/3/library/os.html Availability: recent flavors of Unix.
ইরিভিং

175

ডাং - ল্যাব্র্যান্ডি আমাকে ঘুষি মারল, কিন্তু এর অর্থ এই নয় যে আমি আপনাকে ভিস্তার জন্য সিস্টেমের ফলাফলগুলি সরবরাহ করতে পারি না!

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

6
উইন্ডোজ 7:platform.release() '7'
হুগো

3
সুতরাং, হ্যাঁ, আমি কেবল platform.release()আমার উইন্ডোজ 10 এ চলেছি , এবং এটি অবশ্যই আমাকে দিয়েছে '8'। আপগ্রেড করার আগে আমি পাইথনটি ইনস্টল করেছি, তবে সত্যি ??
কোডস্মিত

2
আমি ভেবেছিলাম এটি সম্ভবত উইন্ডোজ 8 থেকে আপগ্রেড হয়েছে (বনাম। এটি একটি ক্লিন ইনস্টল হচ্ছে) এবং পাইথন যা কিছু রেজিস্ট্রিতে দেখায় বা যা কিছু পিছনে রেখেছিল?
ওজেফোর্ড

2
উইন্ডোজ অজগর জন্য রিলিজ খুঁজছেন এটি Win32 এপিআই ফাংশন getVersionEx এর মূল অংশে ব্যবহার করে। এই ফাংশনটি সম্পর্কে এই মাইক্রোসফ্ট নিবন্ধের শীর্ষে থাকা নোটগুলি প্রাসঙ্গিক হতে পারে: এমএসডিএন.ইমক্রোসফটকম
en

126

রেকর্ডের জন্য এখানে ম্যাকের ফলাফলগুলি:

>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'

1
ম্যাকোস ক্যাটালিনা 10.15.2 এ, platform.release()ফেরে'19.2.0'
বোরিস

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
অস্পষ্ট ফলাফলের জন্য,
pla pla _platform.startswith

42

আপনি sys.platformযদি ইতিমধ্যে আমদানি করে থাকেন sysএবং আপনি অন্য কোনও মডিউল আমদানি করতে না চান তবে আপনি এটিও ব্যবহার করতে পারেন

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

অন্য মডিউলটি আমদানি করা বা না করার পাশাপাশি পদ্ধতির কোনও সুবিধা আছে কি?
ম্যাথ

স্কোপিং এর প্রধান সুবিধা। আপনি যতটা সম্ভব গ্লোবাল ভেরিয়েবলের নাম চান। যখন আপনার কাছে ইতিমধ্যে বিশ্বব্যাপী নাম হিসাবে "সিস" রয়েছে, আপনার আর একটি নাম যুক্ত করা উচিত নয়। তবে আপনি যদি এখনও "সিস" ব্যবহার না করেন তবে "_প্ল্যাটফর্ম" ব্যবহার আরও বর্ণনামূলক এবং অন্য অর্থের সাথে সংঘর্ষের সম্ভাবনা কম হতে পারে।
স্যান্ডারড 17

33

আপনি যদি ব্যবহারকারী পঠনযোগ্য ডেটা চান তবে এখনও বিশদভাবে, আপনি প্ল্যাটফর্ম.প্ল্যাটফর্ম () ব্যবহার করতে পারেন

>>> 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, ইটানিয়াম, পাওয়ার পিসি, স্পার্ক) এখানে উপলভ্য: https://github.com/hpcugent/easybuild/ উইকি / OS_flavor_name_version

উবুন্টু 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(ওএসএক্সের জন্য)।

দীর্ঘ কাহিনী

পাইথনে ওএস পাওয়ার 3 টি উপায় রয়েছে যার প্রতিটি নিজস্ব প্রো এবং কনস সহ:

পদ্ধতি 1

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

এটি কীভাবে কাজ করে ( উত্স ): অভ্যন্তরীণভাবে ওএস দ্বারা সংজ্ঞায়িত OS এর নাম পেতে ওএস এপিআইগুলিকে কল করে। বিভিন্ন ওএস-নির্দিষ্ট মানগুলির জন্য এখানে দেখুন ।

প্রো: ম্যাজিক নেই, নিম্নস্তরের।

কন: ওএস সংস্করণ নির্ভর, তাই সরাসরি ব্যবহার না করাই ভাল।

পদ্ধতি 2

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

এটি কীভাবে কাজ করে ( উত্স) ) : অভ্যন্তরীণে এটি পরীক্ষা করে যে পাইথনে ওএস-নির্দিষ্ট মডিউল রয়েছে যা পিক্সিক্স বা এনটি।

প্রো: পোস্টিক্স ওএস কিনা তা পরীক্ষা করা সহজ

কন: লিনাক্স বা ওএসএক্সের মধ্যে কোনও পার্থক্য নেই।

পদ্ধতি 3

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

এটি কীভাবে কাজ করে ( উত্স) ) : অভ্যন্তরীণভাবে এটি অভ্যন্তরীণ ওএস এপিআইগুলিকে কল করবে, ওএস সংস্করণ-নির্দিষ্ট নাম 'উইন 32' বা 'উইন 16' বা 'লিনাক্স 1'র মতো পেয়ে যাবে এবং তারপরে' উইন্ডোজ 'বা' লিনাক্স 'বা আরও জেনেরিক নামগুলিতে সাধারণীকরণ করবে বা 'ডারউইন' বেশ কয়েকটি হিউরিস্টিক প্রয়োগ করে।

প্রো: উইন্ডোজ, ওএসএক্স এবং লিনাক্সের জন্য সেরা পোর্টেবল উপায়।

কন: পাইথন লোকেরা অবশ্যই স্বাভাবিকীকরণকে যুগোপযোগী রাখতে হবে।

সারসংক্ষেপ

  • যদি আপনি ওএসটি উইন্ডোজ বা লিনাক্স বা ওএসএক্স কিনা তা পরীক্ষা করতে চান তবে সবচেয়ে নির্ভরযোগ্য উপায় platform.system()
  • আপনি যদি ওএস-নির্দিষ্ট কল করতে চান তবে বিল্ট-ইন পাইথন মডিউলগুলির মাধ্যমে posixবা ntতারপরে ব্যবহার করুনos.name
  • আপনি যদি ওএস দ্বারা সরবরাহিত কাঁচা ওএস নাম পেতে চান তবে ব্যবহার করুন sys.platform

"জিনিসগুলি করার একটি (এবং কেবলমাত্র একমাত্র উপায়) থাকা উচিত" এর জন্য অনেক কিছু। তবে আমি বিশ্বাস করি এটিই সঠিক উত্তর। আপনাকে শিরোনামযুক্ত ওএস নামের সাথে তুলনা করতে হবে তবে এটি কোনও সমস্যা নয় এবং এটি আরও বহনযোগ্য।
ভিনসেন্ট-এলজি

16

নতুন উত্তর সম্পর্কে কীভাবে:

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

আমি যদি ম্যাকোস ব্যবহার করি তবে এটি আউটপুট হবে


7
psutil স্ট্যান্ডার্ড লিবার অংশ নয়
কোরি গোল্ডবার্গ

14

আপনি বিভিন্ন মডিউল ব্যবহার করে কী মানগুলি আশা করতে পারেন তার কিছুটা নিয়মতান্ত্রিক তালিকা শুরু করেছি (আপনার সিস্টেম সম্পাদনা করতে এবং যুক্ত করতে নির্দ্বিধায়):

লিনাক্স (64 বিট) + ডাব্লুএসএল

os.name                     posix
sys.platform                linux
platform.system()           Linux
sysconfig.get_platform()    linux-x86_64
platform.machine()          x86_64
platform.architecture()     ('64bit', '')
  • আর্চলিনাক্স এবং পুদিনা দিয়ে চেষ্টা করেছেন, একই ফলাফল পেয়েছে
  • পাইথন 2 sys.platformএ কার্নেল সংস্করণ দ্বারা অনুকরণ করা হয়, উদাহরণস্বরূপlinux2 , সমস্ত কিছু অভিন্ন থাকে
  • লিনাক্সের জন্য উইন্ডোজ সাবসিস্টেমে একই আউটপুট (উবুন্টু 18.04 এলটিএস দিয়ে চেষ্টা করা) বাদে platform.architecture() = ('64bit', 'ELF')

উইন্ডোজ (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 এর অনুরূপ যা রয়েছে
  • উইন্ডোজের অ্যানাকোন্ডা অফিশিয়াল পাইথন উইন্ডোজ ইনস্টলার হিসাবে একই
  • আমার কাছে ম্যাক বা সত্যিকারের 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

আমি ওয়েবলোগিকের সাথে আসা ডাব্লুএলএসটি সরঞ্জামটি ব্যবহার করছি এবং এটি প্ল্যাটফর্ম প্যাকেজটি কার্যকর করে না।

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 ( উইন্ডোজ 2003 jdk1.5 সঙ্গে os.system () সঙ্গে সমস্যা (যা আমি, আমি বাক্সের WebLogic আউট ব্যবহার করতে হবে ব্যবহার করতে পারবেন না)), আমি যা ব্যবহার:

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
এসও তে স্বাগতম, এখানে, কেন আপনার সমাধানটি কীভাবে ব্যবহার করা যায় এবং কীভাবে তা ব্যাখ্যা করার জন্য এটি একটি ভাল অনুশীলন। এটি আপনার উত্তরটিকে আরও মূল্যবান করে তুলবে এবং আরও পাঠককে আপনি কীভাবে এটি করবেন সে সম্পর্কে আরও ভাল ধারণা পেতে সহায়তা করবে। আমি আপনাকে পরামর্শ দিচ্ছি যে আমাদের আমাদের প্রায়শই জিজ্ঞাসিত প্রশ্নাগুলি : স্ট্যাকওভারফ্লো / ফাক এ দেখুন
ফোর্স ম্যাজিক

উত্তম উত্তর, সম্ভবত এমনকি মূল উত্তরটির সাথে সমান। তবে আপনি কেন ব্যাখ্যা করতে পারেন।
vgoff

9

জাইথনের পক্ষে ওএস নাম পাওয়ার একমাত্র উপায় আমি খুঁজে পেয়েছি os.nameজাভা সম্পত্তি ( উইনএক্সপি-তে জাইথন ​​২.৩.৩ এর জন্য চেষ্টা করা sys, osএবং platformমডিউল) পরীক্ষা করা:

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

জাইথনে ওএস তথ্য আহরণের জন্য আপনি "প্ল্যাটফর্ম.জভা_ভার ()" কল করতে পারেন।
ডকোসি

8

উইন্ডোজ 8 এ আকর্ষণীয় ফলাফল:

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

সম্পাদনা: এটি একটি বাগ


7

আপনি সিগুইনের সাথে উইন্ডোজটিতে আছেন কিনা os.nameতা দেখুন posix

>>> 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
প্ল্যাটফর্ম.সিসটেম () একটি ম্যাকের উপর "ডারউইন" এবং "ডারউইন" ফেরায় বলে এটি সমস্যাযুক্ত যদি সমস্যাটি হয় তবে হালকা ()। খুঁজুন ("জয়") = 3.
মিসহাএফ

is_windows = প্ল্যাটফর্ম.সিস্টেম ()। নিম্ন ()। সূচনা ("বিজয়") বা মিথ্যা
কোরি গোল্ডবার্গ

6

আপনি যদি কার্নেল সংস্করণ ইত্যাদির সন্ধান না করেন তবে লিনাক্স বিতরণ সন্ধান করছেন তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন

পাইথন 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

স্পষ্টতই, আপনি যদি এটি লিনাক্সে চালাচ্ছেন তবে এটি কাজ করবে। আপনি যদি প্ল্যাটফর্ম জুড়ে আরও জেনেরিক স্ক্রিপ্ট পেতে চান তবে আপনি অন্যান্য উত্তরে প্রদত্ত কোড নমুনাগুলির সাথে এটি মিশ্রণ করতে পারেন।


5

এটা চেষ্টা কর:

import os

os.uname()

এবং আপনি এটি করতে পারেন:

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

1
এছাড়াও os.uname(): উইন্ডোজ উপলব্ধ নয় docs.python.org/2/library/os.html#os.uname প্রাপ্যতা: ইউনিক্স সাম্প্রতিক স্বাদে।
সিসিপিজ্জা

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

সমস্ত তথ্য পেতে আপনি ওএস মডিউলটি আমদানি না করে কেবল প্ল্যাটফর্ম মডিউলটিও ব্যবহার করতে পারেন।

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

4

আমি জানি এটি একটি পুরানো প্রশ্ন তবে আমি বিশ্বাস করি যে আমার উত্তরটি এমন কিছু লোকের পক্ষে সহায়ক হতে পারে যারা তাদের কোডে ওএস সনাক্ত করার জন্য পাইথোনিক পদ্ধতিটি সহজ, সহজ বোঝার জন্য সন্ধান করছেন। পাইথন 3.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

আপনি যদি ম্যাকোস এক্স চালাচ্ছেন এবং চালাচ্ছেন তবে platform.system()আপনি ডারউইন পাবেন কারণ ম্যাকস এক্স অ্যাপল এর ডারউইন ওএস এ নির্মিত হয়েছে। ডারউইন ম্যাকস এক্স এর কার্নেল এবং GUI ছাড়াই মূলত ম্যাকোস এক্স।


2

এই সমাধান উভয়ের জন্য কাজ করে pythonএবংjython

মডিউল os_phanfy.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

নিম্নলিখিতগুলির মতো একটি সাধারণ এনাম বাস্তবায়ন সম্পর্কে কীভাবে? বাহ্যিক 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

সহজভাবে আপনি এনাম মান দিয়ে অ্যাক্সেস করতে পারেন

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

পিএস এটি অজগর 3


1

আপনি কোডে তাকান পারেন pyOSinfoযা অংশ পিপ-ডেট প্যাকেজ, সবচেয়ে প্রাসঙ্গিক ওএস তথ্য পেতে, আপনার পাইথন বন্টন থেকে দেখা যায়।

লোকেরা তাদের ওএস পরীক্ষা করতে চান এমন একটি সাধারণ কারণ টার্মিনাল সামঞ্জস্যের জন্য এবং যদি নির্দিষ্ট সিস্টেম কমান্ড উপলব্ধ থাকে। দুর্ভাগ্যক্রমে, এই পরীক্ষার সাফল্য আপনার অজগর ইনস্টলেশন এবং ওএসের উপর কিছুটা নির্ভরশীল। উদাহরণস্বরূপ, unameবেশিরভাগ উইন্ডোজ পাইথন প্যাকেজগুলিতে পাওয়া যায় না। উপরের পাইথন প্রোগ্রামটি আপনাকে ইতিমধ্যে সরবরাহ করা সর্বাধিক ব্যবহৃত বিল্ট-ইন ফাংশনগুলির আউটপুট প্রদর্শন করবে os, sys, platform, site

এখানে চিত্র বর্ণনা লিখুন

তাই সবচেয়ে ভালো উপায় শুধুমাত্র অপরিহার্য কোড এ খুঁজছেন হয় পেতে যে একটি উদাহরণ হিসাবে। (আমি অনুমান করি যে আমি এটি এখানে কেবল আটকানোতে পারতাম, তবে এটি রাজনৈতিকভাবে সঠিক হত না))


1

আমি গেমটি করতে দেরি করেছি, তবে কারওর প্রয়োজন হলে, এই কোডটি আমি আমার কোডে সামঞ্জস্য করতে ব্যবহার করি যাতে এটি উইন্ডোজ, লিনাক্স এবং ম্যাকওতে চলে:

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.