मैं यह कैसे निर्धारित करूं कि मेरा अजगर शेल ओएस एक्स पर 32 बिट या 64 बिट मोड में निष्पादित कर रहा है?


420

मुझे यह बताने के लिए एक तरीका चाहिए कि शेल के भीतर से शेल किस मोड में है।

मैंने मंच मॉड्यूल को देखने की कोशिश की है, लेकिन यह आपको "बिट आर्किटेक्चर के बारे में और निष्पादन योग्य के लिए उपयोग किए जाने वाले लिंकेज प्रारूप" के बारे में बताता है: बाइनरी 64 बिट के रूप में संकलित है (हालांकि मैं ओएस एक्स 10.6 पर चल रहा हूं) यह हमेशा 64 बिट की रिपोर्ट करता है, भले ही मैं 32bit मोड को बाध्य करने के लिए यहां वर्णित विधियों का उपयोग कर रहा हूं )।


1
बस ब्याज से बाहर: आपको जानने की आवश्यकता क्यों है?
लेन्नर्ट रेग्रोब

2
मुझे OS X 10.6 पर कुछ मॉड्यूल बनाने और लोड करने में समस्या हो रही है। विशेष रूप से pysco, जो शिकायत कर रहा है कि मैं 64 बिट मोड में चल रहा हूं। यह एक virtualenv के तहत है और साथ ही कुछ अतिरिक्त जटिलताओं के माध्यम से मुझे काम करने की आवश्यकता है ...
jkp

2
मैं जानना चाहूंगा क्योंकि जब मैं एक स्टैंड-अलोन बाइनरी वितरण योग्य बनाने के लिए PyInstaller जैसी किसी चीज का उपयोग करता हूं (उन उपयोगकर्ताओं को देने के लिए जिनके पास पाइथन का सही संस्करण स्थापित नहीं हो सकता है), बाइनरी I का उत्पादन 32/64 बिट के आधार पर होगा पायथन पर मैं के साथ PyInstaller चलाता हूं। आदर्श रूप से मैं सोच रहा हूं कि मैं फ़ाइल नाम में '32' या '64' के साथ परिणामी बाइनरी / आर्काइव फ़ाइल को स्वचालित रूप से नाम देना चाहूंगा, बजाय इसके कि मैं जहां पर निर्भर करता हूं वहां मैन्युअल रूप से फ़ाइलों का नाम बदलें। 'मेक' कमांड को निष्पादित करें।
जोनाथन हार्टले

जवाबों:


412

एक तरीका यह है sys.maxsizeकि यहां दस्तावेज के रूप में देखें :

$ python-32 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffff', False)
$ python-64 -c 'import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)'
('7fffffffffffffff', True)

sys.maxsizeपायथन 2.6 में पेश किया गया था। यदि आपको पुराने सिस्टम के लिए परीक्षण की आवश्यकता है, तो यह थोड़ा और जटिल परीक्षण सभी पायथन 2 और 3 रिलीज पर काम करना चाहिए:

$ python-32 -c 'import struct;print( 8 * struct.calcsize("P"))'
32
$ python-64 -c 'import struct;print( 8 * struct.calcsize("P"))'
64

BTW, आप platform.architecture()इस के लिए उपयोग करने के लिए परीक्षा हो सकती है । दुर्भाग्य से, इसके परिणाम हमेशा विश्वसनीय नहीं होते हैं, खासकर ओएस एक्स सार्वभौमिक बायनेरिज़ के मामले में

$ arch -x86_64 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32'
64bit True
$ arch -i386 /usr/bin/python2.6 -c 'import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32'
64bit False

14
विंडोज चलाते समय ( यहां देखें ) जब sys.maxint का उपयोग 64-बिट पायथन का पता लगाने के लिए काम नहीं करेगा । इसके बजाय, क्रॉस-प्लेटफ़ॉर्म समाधान के लिए struct.calcsize ("P") का उपयोग करें।
ल्यूक मूर

जाँच के लिए धन्यवाद। मैंने sys.maxsizeपायथन 2.6+ के लिए अब प्रलेखित परीक्षण और मॉड्यूल structद्वारा उपयोग किए गए परीक्षण को दिखाने के लिए उत्तर को काफी हद तक संशोधित किया है platformजो कि पायथन 2 के पुराने संस्करणों के लिए भी काम करता है
नेड डीली

यह आयरनपाइथन में काम नहीं करता है, sys.maxsize 2 ** 31 दोनों 32 बिट के लिए और 64 बिट आयरनपाइथन
मेह

4
यिनोन, यह सच है लेकिन यह वह नहीं है जो सवाल पूछा गया था। और, उन सीपीयू पर जहां चलना संभव है, कहते हैं, या तो 32-बिट या 64-बिट बायनेरिज़, मशीन का आर्च आमतौर पर पायथन प्रोग्राम के लिए प्रासंगिक नहीं है; क्या मायने रखता है कि पायथन दुभाषिया खुद को किस रूप में चला रहा है।
नेड डिली

6
विंडोज़ cmd पर, आपको बाहर की ओर दोहरे उद्धरण और अंदर पर एकल उद्धरण डालने की आवश्यकता है अन्यथा यह एक सिंटैक्स त्रुटि उत्पन्न करेगा। ऐसा शायद इसलिए है क्योंकि विंडोज़ को लगता है कि सिंगल-कोट्स के बीच रिक्त स्थान अभी भी तर्क परिसीमन हैं। इस तथ्य को समायोजित करने के लिए इस उत्तर को समायोजित करने में मदद मिल सकती है।
स्टीवन ब्लूएन

254

जब आप टर्मिनल / कमांड लाइन में पायथन इंटरप्रेटर शुरू करते हैं तो आपको एक लाइन भी दिखाई दे सकती है जैसे:

Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32

जहां [MSC v.1500 64 bit (AMD64)]64-बिट पायथन का मतलब है। मेरे विशेष सेटअप के लिए काम करता है।


6
तो यह क्या है? 64 बिट पायथन या 32 बिट पायथन?
phpJs

9
@ एफपीजे 64 बिट की वजह से[MSC v.1500 64 bit (AMD64)]
एडवर्ड फ्लोरिनस्कु

19
दुर्भाग्य से केवल पायथन के विंडोज संस्करणों के लिए काम करता है। मेरा OSX इंस्टॉलेशन रिटर्नPython 2.7.8 (v2.7.8:ee879c0ffa11, Jun 29, 2014, 21:07:35) [GCC 4.2.1 (Apple In. build 5666) (dot 3)] on darwin
anodj

6
साइबरविन पर, आपको यह उत्तर मिलता है:Python 2.7.8 (default, Jul 25 2014, 14:04:36) [GCC 4.8.3] on cygwin
जोनो_एफटीडब्ल्यू

1
इस जानकारी को कॉल करके कोड में पाया जा सकता है sys.version। मुझे उदाहरण के लिए मिलता है ('3.4.4 |Continuum Analytics, Inc.| (default, Feb 16 2016, 09:54:04) [MSC ' 'v.1600 64 bit (AMD64)]')या2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)]
ओटर्ब

190

मूल रूप से मैथ्यू मार्शल के उत्तर पर एक संस्करण (std.library से संरचना के साथ):

import struct
print struct.calcsize("P") * 8

1
Imho, ctypes संस्करण से बेहतर - पुराने पायथन के साथ भी काम करता है।
yk4ever

7
बहुत उपयोगी, एक पंक्ति में उपयोग किया जा सकता है। $ अजगर-सी 'आयात संरचना; प्रिंट स्ट्रक्चर्स। कैलक्लाइज़ ("पी") * 8 '
सन

1
प्रिंट (struct.calcsize ("P") * 8) बेहतर है।
हैलोवर्ल्ड

2
so Python3 के लिए कॉपी-पेस्ट ऑन्लाइनर:python -c "import struct; print(struct.calcsize('P')*8)"
Neinstein

78

शून्य पॉइंटर का आकार पाने के लिए ctypes का उपयोग करने का प्रयास करें:

import ctypes
print ctypes.sizeof(ctypes.c_voidp)

यह 32 बिट के लिए 4 या 64 बिट के लिए 8 होगा।


1
काम करता है, भी, हालांकि यह एक अनावश्यक आयात और मॉड्यूल लोड के संभावित मामूली नुकसान है अगर आप अन्यथा ctypes की जरूरत नहीं है: sys मॉड्यूल, otoh, दुभाषिया में संकलित है।
नेड डीली

कृपया मुझे समझने में मदद करें: मेरे 64b इंस्टॉलेशन python -c 'import ctypes; print ctypes.sizeof(ctypes.c_voidp)'रिटर्न पर 8 । या होना चाहिए python -c 'import ctypes; print ctypes.sizeof(ctypes.c_voidp) * 8'?
लुक्मडो

फ़ंक्शन बाइट्स (4 या 8) में आकार लौटाता है । यदि आपको बिट्स (32 या 64) में आकार की आवश्यकता है, तो आपको 8. b_is_python_64bit = (ctypes.sizeof (ctypes.c_voidp) == 8) के साथ गुणा करना होगा
phieie

1
बस कॉलpython -c "import ctypes; print(32 if ctypes.sizeof(ctypes.c_voidp)==4 else 64, 'bit CPU')"
vitiral

54

पायथन कंसोल खोलें:

import platform
platform.architecture()[0]

इसे आपके प्लेटफ़ॉर्म के अनुसार '64 बिट' या '32 बिट' प्रदर्शित करना चाहिए।

वैकल्पिक रूप से ( ओएस एक्स बायनेरिज़ के मामले में ):

import sys
sys.maxsize > 2**32 
# it should display True in case of 64bit and False in case of 32bit

patform मॉड्यूल हमेशा विश्वसनीय नहीं होता है डॉक्स डॉक्सहोमथन.org/2 / library / platform.html देखें यह कुछ विंडोज एप्लिकेशन के लिए भी सच है
GM

18

गैर-प्रोग्रामेटिक समाधान के लिए, गतिविधि मॉनिटर में देखें। यह 64-बिट प्रक्रियाओं की वास्तुकला को "इंटेल (64-बिट)" के रूप में सूचीबद्ध करता है।


1
मैक ओएस 10.xx का उपयोग करके हम में से उन लोगों के लिए एक बहुत अच्छा वैकल्पिक जवाब!
mkelley33

16

अपने Centos Linux सिस्टम पर मैंने निम्नलिखित कार्य किया:

1) पायथन इंटरप्रेटर शुरू किया (मैं 2.6.6 का उपयोग कर रहा हूँ)
2) निम्नलिखित कोड को रन करें:

import platform
print(platform.architecture())

और इसने मुझे दिया

(64bit, 'ELF')

क्या यह समाधान ओपी द्वारा उसके लिए गैर-कार्य के रूप में वर्णित नहीं किया गया था?
एंटनी हैचकिंस

यह हो सकता है, लेकिन यह वही है जो मुझे चाहिए था; एक "गलत जवाब" के लिए खेद है, लेकिन मुझे इसकी बुरी तरह से जरूरत थी।
UnsettlingTrend

यह समाधान सोलारिस 11 के लिए एकदम सही है
स्टीवन वोल्फ

11

platform.architecture() नोट कहते हैं:

नोट: मैक ओएस एक्स (और शायद अन्य प्लेटफार्मों) पर, निष्पादन योग्य फाइलें सार्वभौमिक फाइलें हो सकती हैं जिनमें कई आर्किटेक्चर शामिल हैं।

वर्तमान दुभाषिया के "64-बिटनेस" पर जाने के लिए, sys.maxsize विशेषता को क्वेरी करना अधिक विश्वसनीय है:

import sys
is_64bits = sys.maxsize > 2**32

11

सब कुछ समूहीकृत कर रहा है ...

उस पर विचार करना:

  • ओएसएक्स के लिए सवाल पूछा गया है (मेरे पास एक पुराना और फटा हुआ है) वीएम एक प्राचीन अजगर संस्करण के साथ)
  • मेरा मुख्य दूत विन है
  • मेरे पास केवल 32 बिट संस्करण विन पर स्थापित है (और मैंने Lnx पर एक "अपंग" बनाया है )

मैं पायथन 3 और पायथन 2 का उपयोग कर, सभी 3 प्लेटफार्मों पर अनुकरण करने जा रहा हूं ।

  1. [अजगर 3. डॉक्स] की जाँच करें : sys। अधिकतम मान - इसकी तुलना करें 0x100000000( 2 ** 32): 64 बिट के लिए अधिक , 32 बिट के लिए छोटा :
    • OSX 9 x64 :
      • पायथन 2.7.10 x64 :
        >>> import sys
        >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform)
        'Python 2.7.10 (default, Oct 14 2015, 05:51:29) \n[GCC 4.8.2] on darwin'
        >>> hex(sys.maxsize), sys.maxsize > 0x100000000
        ('0x7fffffffffffffff', True)
    • Ubuntu 16 x64 :
      • पायथन 3.5.2 x64 :
        >>> import sys
        >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform)
        'Python 3.5.2 (default, Nov 23 2017, 16:37:01) \n[GCC 5.4.0 20160609] on linux'
        >>> hex(sys.maxsize), sys.maxsize > 0x100000000
        ('0x7fffffffffffffff', True)
      • अजगर 3.6.4 x86 :
        >>> import sys
        >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform)
        'Python 3.6.4 (default, Apr 25 2018, 23:55:56) \n[GCC 5.4.0 20160609] on linux'
        >>> hex(sys.maxsize), sys.maxsize > 0x100000000
        ('0x7fffffff', False)
    • विन 10 x64 :
      • पायथन 3.5.4 x64 :
        >>> import sys
        >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform)
        'Python 3.5.4 (v3.5.4:3f56838, Aug  8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32'
        >>> hex(sys.maxsize), sys.maxsize > 0x100000000
        ('0x7fffffffffffffff', True)
      • अजगर 3.6.2 x86 :
        >>> import sys
        >>> "Python {0:s} on {1:s}".format(sys.version, sys.platform)
        'Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32'
        >>> hex(sys.maxsize), sys.maxsize > 0x100000000
        ('0x7fffffff', False)


  1. [पायथन 3. डॉक्स] का उपयोग करें : संरचना। (पॉइंटर) प्रारूप द्वारा उत्पादित ऑब्जेक्ट आकार को निर्धारित करने के लिए कैलक्लाइज़ ( प्रारूप ) । दूसरे शब्दों में, सूचक आकार ( sizeof(void*)) निर्धारित करता है :
    • OSX 9 x64 :
      • पायथन 2.7.10 x64 :
        >>> import struct
        >>> struct.calcsize("P") * 8
        64
    • Ubuntu 16 x64 :
      • पायथन 3.5.2 x64 :
        >>> import struct
        >>> struct.calcsize("P") * 8
        64
      • अजगर 3.6.4 x86 :
        >>> import struct
        >>> struct.calcsize("P") * 8
        32
    • विन 10 x64 :
      • पायथन 3.5.4 x64 :
        >>> import struct
        >>> struct.calcsize("P") * 8
        64
      • अजगर 3.6.2 x86 :
        >>> import struct
        >>> struct.calcsize("P") * 8
        32


  1. [Python 3.Docs] का उपयोग करें : ctypes - Python के लिए एक विदेशी फ़ंक्शन लाइब्रेरी । यह एक सूचक ( sizeof(void*)) के आकार का निर्धारण करने के लिए भी उबलता है । नोट के रूप में, ctypes # 2 का उपयोग करता है (इस कार्य के लिए आवश्यक नहीं) "$ {PYTHON_SRC_DIR} / Lib / ctypes / __ init__.py" ( लाइन # 15 के आसपास ) के माध्यम से:
    • OSX 9 x64 :
      • पायथन 2.7.10 x64 :
        >>> import ctypes
        >>> ctypes.sizeof(ctypes.c_void_p) * 8
        64
    • Ubuntu 16 x64 :
      • पायथन 3.5.2 x64 :
        >>> import ctypes
        >>> ctypes.sizeof(ctypes.c_void_p) * 8
        64
      • अजगर 3.6.4 x86 :
        >>> import ctypes
        >>> ctypes.sizeof(ctypes.c_void_p) * 8
        32
    • विन 10 x64 :
      • पायथन 3.5.4 x64 :
        >>> import ctypes
        >>> ctypes.sizeof(ctypes.c_void_p) * 8
        64
      • अजगर 3.6.2 x86 :
        >>> import ctypes
        >>> ctypes.sizeof(ctypes.c_void_p) * 8
        32


  1. [अजगर 3. डॉक्स]: प्लेटफ़ॉर्म। वास्तुकला ( निष्पादन योग्य = sys.executable, बिट्स = '', लिंकेज = '' ) !!! OSX पर विश्वसनीय नहीं !!! मल्टी आर्क एग्जीक्यूटेबल (या .dylib ) फॉर्मेट के कारण (कुछ मामलों में, # 2 का उपयोग करता है )
    • OSX 9 x64 :
      • पायथन 2.7.10 x64 :
        >>> import platform
        >>> platform.architecture()
        ('64bit', '')
    • Ubuntu 16 x64 :
      • पायथन 3.5.2 x64 :
        >>> import platform
        >>> platform.architecture()
        ('64bit', 'ELF')
      • अजगर 3.6.4 x86 :
        >>> import platform
        >>> platform.architecture()
        ('32bit', 'ELF')
    • विन 10 x64 :
      • पायथन 3.5.4 x64 :
        >>> import platform
        >>> platform.architecture()
        ('64bit', 'WindowsPE')
      • अजगर 3.6.2 x86 :
        >>> import platform
        >>> platform.architecture()
        ('32bit', 'WindowsPE')


  1. लंगड़ा वर्कअराउंड ( गेनरी ) - एक बाहरी कमांड ( [man7]: FILE (1) ) को [Python 3.Docs]: os के माध्यम से प्राप्त करें सिस्टम ( कमांड )# 4 की सीमाएं लागू करें (कभी-कभी यह भी काम नहीं कर सकता है):
    • OSX 9 x64 :
      • पायथन 2.7.10 x64 :
        >>> import os
        >>> os.system("file {0:s}".format(os.path.realpath(sys.executable)))
        /opt/OPSWbuildtools/2.0.6/bin/python2.7.global: Mach-O 64-bit executable x86_64
    • Ubuntu 16 x64 :
      • पायथन 3.5.2 x64 :
        >>> import os
        >>> os.system("file {0:s}".format(os.path.realpath(sys.executable)))
        /usr/bin/python3.5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=59a8ef36ca241df24686952480966d7bc0d7c6ea, stripped
      • अजगर 3.6.4 x86 :
        >>> import os
        >>> os.system("file {0:s}".format(os.path.realpath(sys.executable)))
        /home/cfati/Work/Dev/Python-3.6.4/python: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=5c3d4eeadbd13cd91445d08f90722767b0747de2, not stripped
    • विन 10 x64 :
      • फ़ाइल उपयोगिता मौजूद नहीं है, अन्य 3 rd पार्टी उपकरण हैं जिनका उपयोग किया जा सकता है, लेकिन मैं उन पर जोर नहीं देने वाला हूं


जीत विशिष्ट:

  1. Env var (उदाहरण % PROCESSOR_ARCHITECTURE% (या अन्य)) को [Python 3.Docs] के माध्यम से जांचें: os। environ :
    • विन 10 x64 :
      • पायथन 3.5.4 x64 :
        >>> import os
        >>> os.environ["PROCESSOR_ARCHITECTURE"]
        'AMD64'
      • अजगर 3.6.2 x86 :
        >>> import os
        >>> os.environ["PROCESSOR_ARCHITECTURE"]
        'x86'


  1. [अजगर 3. डॉक्स]: एसआईएस। संस्करण ( इंटरप्रेटर शुरू करते समय 1 सेंट लाइन में भी प्रदर्शित )
    • # 1 की जाँच करें

7

struct.calcsize("P")सिंगल पॉइंटर को स्टोर करने के लिए आवश्यक बाइट्स का रिटर्न साइज। 32-बिट सिस्टम पर, यह 4 बाइट्स लौटाएगा। 64-बिट सिस्टम पर, यह 8 बाइट्स लौटाएगा।

32यदि आप 32-बिट अजगर 64चला रहे हैं और यदि आप 64-बिट अजगर चला रहे हैं, तो निम्नलिखित वापस आएगा :

अजगर २

import struct;print struct.calcsize("P") * 8

अजगर ३

import struct;print(struct.calcsize("P") * 8)

5

python -VVकमांड लाइन में एक करो । इसे संस्करण को वापस करना चाहिए।


यह यह नहीं दिखा रहा है कि इसे पायथन के भीतर कैसे किया जाए।
पार्करड

यह प्रश्न का उत्तर देने के लिए आवश्यक जानकारी प्रदान करने के लिए प्रतीत नहीं होता है
दिमित्री ज़ैतसेव

4
C:\Users\xyz>python

Python 2.7.6 (default, Nov XY ..., 19:24:24) **[MSC v.1500 64 bit (AMD64)] on win
32**
Type "help", "copyright", "credits" or "license" for more information.
>>>

सेमी में अजगर को मारने के बाद




2

32 बिट के लिए यह 32 पर लौटेगा और 64 बिट के लिए यह 64 पर लौटेगा

import struct
print(struct.calcsize("P") * 8)

1

प्लेटफ़ॉर्म आर्किटेक्चर विश्वसनीय तरीका नहीं है। हमारे बजाय:

$ arch -i386 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 2147483647)
>>> ^D
$ arch -x86_64 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 9223372036854775807)

0

platform.architecture() समस्याग्रस्त (और महंगी) है।

आसानी sys.maxsize > 2**32से Py2.6 के लिए परीक्षण करें ।

यह वास्तविक (डिफ़ॉल्ट) सूचक आकार के लिए एक विश्वसनीय परीक्षण है और कम से कम Py2.3 के बाद से संगत है struct.calcsize('P') == 8:। इसके अलावा: ctypes.sizeof(ctypes.c_void_p) == 8

नोट: जीसीसी विकल्प -mx32या तो के साथ बनाया जा सकता है , जो 64 बिट आर्किटेक्चर अनुप्रयोग हैं, लेकिन 32 बिट पॉइंटर्स को डिफ़ॉल्ट (मेमोरी और गति को बचाने) के रूप में उपयोग करते हैं। 'sys.maxsize = ssize_t' C सूचक आकार (आमतौर पर 2**31 - 1वैसे भी) का कड़ाई से प्रतिनिधित्व नहीं कर सकता है । और ऐसे सिस्टम थे जो कोड और डेटा के लिए अलग-अलग पॉइंटर आकार रखते हैं और यह स्पष्ट करने की आवश्यकता है कि वास्तव में समझदार "32 बिट या 64 बिट मोड" का उद्देश्य क्या है?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.