আমি উইন্ডোজ বা ইউনিক্সে আছি কিনা তা দেখার জন্য আমার কী দেখার প্রয়োজন?
আমি উইন্ডোজ বা ইউনিক্সে আছি কিনা তা দেখার জন্য আমার কী দেখার প্রয়োজন?
উত্তর:
>>> 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'
আপনি যদি ব্যবহারকারী পঠনযোগ্য ডেটা চান তবে এখনও বিশদভাবে, আপনি প্ল্যাটফর্ম.প্ল্যাটফর্ম () ব্যবহার করতে পারেন
>>> 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
ছোট গল্প
ব্যবহার 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
।নতুন উত্তর সম্পর্কে কীভাবে:
import psutil
psutil.MACOS #True (OSX is deprecated)
psutil.WINDOWS #False
psutil.LINUX #False
আমি যদি ম্যাকোস ব্যবহার করি তবে এটি আউটপুট হবে
আপনি বিভিন্ন মডিউল ব্যবহার করে কী মানগুলি আশা করতে পারেন তার কিছুটা নিয়মতান্ত্রিক তালিকা শুরু করেছি (আপনার সিস্টেম সম্পাদনা করতে এবং যুক্ত করতে নির্দ্বিধায়):
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())
আমি ওয়েবলোগিকের সাথে আসা ডাব্লুএলএসটি সরঞ্জামটি ব্যবহার করছি এবং এটি প্ল্যাটফর্ম প্যাকেজটি কার্যকর করে না।
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()
/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)
জাইথনের পক্ষে ওএস নাম পাওয়ার একমাত্র উপায় আমি খুঁজে পেয়েছি 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
একই শিরা মধ্যে....
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")
আপনি যদি কার্নেল সংস্করণ ইত্যাদির সন্ধান না করেন তবে লিনাক্স বিতরণ সন্ধান করছেন তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন
পাইথন 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
স্পষ্টতই, আপনি যদি এটি লিনাক্সে চালাচ্ছেন তবে এটি কাজ করবে। আপনি যদি প্ল্যাটফর্ম জুড়ে আরও জেনেরিক স্ক্রিপ্ট পেতে চান তবে আপনি অন্যান্য উত্তরে প্রদত্ত কোড নমুনাগুলির সাথে এটি মিশ্রণ করতে পারেন।
এটা চেষ্টা কর:
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]
আমি জানি এটি একটি পুরানো প্রশ্ন তবে আমি বিশ্বাস করি যে আমার উত্তরটি এমন কিছু লোকের পক্ষে সহায়ক হতে পারে যারা তাদের কোডে ওএস সনাক্ত করার জন্য পাইথোনিক পদ্ধতিটি সহজ, সহজ বোঝার জন্য সন্ধান করছেন। পাইথন 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
আপনি যদি ম্যাকোস এক্স চালাচ্ছেন এবং চালাচ্ছেন তবে platform.system()
আপনি ডারউইন পাবেন কারণ ম্যাকস এক্স অ্যাপল এর ডারউইন ওএস এ নির্মিত হয়েছে। ডারউইন ম্যাকস এক্স এর কার্নেল এবং GUI ছাড়াই মূলত ম্যাকোস এক্স।
এই সমাধান উভয়ের জন্য কাজ করে 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()
নিম্নলিখিতগুলির মতো একটি সাধারণ এনাম বাস্তবায়ন সম্পর্কে কীভাবে? বাহ্যিক 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
আপনি কোডে তাকান পারেন pyOSinfo
যা অংশ পিপ-ডেট প্যাকেজ, সবচেয়ে প্রাসঙ্গিক ওএস তথ্য পেতে, আপনার পাইথন বন্টন থেকে দেখা যায়।
লোকেরা তাদের ওএস পরীক্ষা করতে চান এমন একটি সাধারণ কারণ টার্মিনাল সামঞ্জস্যের জন্য এবং যদি নির্দিষ্ট সিস্টেম কমান্ড উপলব্ধ থাকে। দুর্ভাগ্যক্রমে, এই পরীক্ষার সাফল্য আপনার অজগর ইনস্টলেশন এবং ওএসের উপর কিছুটা নির্ভরশীল। উদাহরণস্বরূপ, 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'