पाइथन (os.environ) मा वातावरण भ्यारीएबल प्राप्त, जोड्दै, अधिलेखन, र मेटाउँदै

व्यापार

पर्यावरण चर पुन: प्राप्त गर्न सकिन्छ, जाँच, सेट (थपिएको वा अधिलेखन), र अजगर कार्यक्रमहरु मा os.environ को उपयोग गरी मेटाईयो। ध्यान दिनुहोस् कि वातावरण भेरिएबलहरू सेट वा मेटाएर परिवर्तनहरू मात्र पाइथन कार्यक्रम भित्र प्रभावी छन्। यसको मतलब यो होइन कि प्रणाली वातावरण चर पुन: लेखीनेछ।

निम्न जानकारी यहाँ प्रदान गरीएको छ।

  • os.environ
  • वातावरण चर पाउनुहोस्।
  • सेट (जोड्नुहोस्/अधिलेखन) वातावरण चर
  • वातावरण चर हटाउनुहोस्
  • परिवर्तन पर्यावरण चर को प्रभाव
  • वातावरण चर द्वारा स्विच प्रक्रियाहरु

आयात र ओएस मोड्युल को उपयोग गर्नुहोस्। किनकि यो एक मानक पुस्तकालय हो, कुनै अतिरिक्त स्थापना को आवश्यकता छैन। Subprocess मोड्युल पनि मानक पुस्तकालय मा शामिल छ।

import os
import subprocess

ओएस वातावरण

Os.environ को प्रकार os._Environ हो।

print(type(os.environ))
# <class 'os._Environ'>

os._Environ कुञ्जी र मान को एक जोडा संग एक नक्शा प्रकार वस्तु हो, र एक शब्दकोश (dict प्रकार) को रूप मा एकै तरीका छ। वातावरण चर नाम कुञ्जी हो, र यसको मूल्य मान हो।

Os.environ को सामग्री लोड हुनेछ जब ओएस मोड्युल आयात गरीन्छ। Os.environ को सामग्री अपडेट हुनेछैन यदि सिस्टम वातावरण भेरिएबल अन्य माध्यम बाट परिवर्तन गरीएको छ जबकि कार्यक्रम चलिरहेको छ।

सूची प्रिन्ट () संग प्रदर्शित गरीएको छ।

# print(os.environ)

शब्दकोश को रूप मा, तपाइँ निम्न विधिहरु को उपयोग गर्न सक्नुहुन्छ, वा कुञ्जीहरु र मानहरु को अस्तित्व को लागी जाँच गर्न मा प्रयोग गर्नुहोस्।

  • keys()
  • values()

कुञ्जीहरु र मानहरु को प्रसंस्करण मूलतः शब्दकोशहरु को लागी एक जस्तै छ। उदाहरण तल दिइएको छ।

वातावरण चर पाउनुहोस्।

os.environ[Environment variable name]
यो तपाइँ पर्यावरण चर को मूल्य प्राप्त गर्न अनुमति दिन्छ, तर यदि तपाइँ एक वातावरण चर नाम निर्दिष्ट गर्नुहुन्छ कि अवस्थित छैन, तपाइँ एक त्रुटि (KeyError) पाउनुहुनेछ।

print(os.environ['LANG'])
# ja_JP.UTF-8

# print(os.environ['NEW_KEY'])
# KeyError: 'NEW_KEY'

Os.environ को get () विधि डिफल्ट मान प्राप्त गर्न को लागी प्रयोग गर्न सकिन्छ यदि यो अवस्थित छैन। यो पनि शब्दकोश को रूप मा उस्तै छ।

print(os.environ.get('LANG'))
# ja_JP.UTF-8

print(os.environ.get('NEW_KEY'))
# None

print(os.environ.get('NEW_KEY', 'default'))
# default

समारोह os.getenv () पनि प्रदान गरीएको छ। शब्दकोश को get () विधि जस्तै, यो पूर्वनिर्धारित मान फर्काउँछ यदि कुञ्जी अवस्थित छैन। यो समारोह उपयोगी छ यदि तपाइँ मात्र प्राप्त गर्न र एक पर्यावरण चर को मूल्य जाँच गर्न चाहानुहुन्छ।

print(os.getenv('LANG'))
# ja_JP.UTF-8

print(os.getenv('NEW_KEY'))
# None

print(os.getenv('NEW_KEY', 'default'))
# default

सेट (जोड्नुहोस्/अधिलेखन) वातावरण चर

os.environ[Environment variable name]
यस को लागी एक मान निर्दिष्ट गरेर, तपाइँ एक वातावरण चर सेट गर्न सक्नुहुन्छ।

जब एक नयाँ वातावरण चर नाम निर्दिष्ट गरिएको छ, पर्यावरण चर भर्खरै थपिएको छ, र जब एक अवस्थित वातावरण चर नाम निर्दिष्ट गरिएको छ, पर्यावरण चर को मूल्य अधिलेखन गरीएको छ।

os.environ['NEW_KEY'] = 'test'

print(os.environ['NEW_KEY'])
# test

os.environ['NEW_KEY'] = 'test2'

print(os.environ['NEW_KEY'])
# test2

ध्यान दिनुहोस् कि एक स्ट्रि than बाहेक अरु केहि असाइन गर्ने एक त्रुटि (TypeError) मा परिणाम हुनेछ। यदि तपाइँ एक संख्यात्मक मान असाइन गर्न चाहानुहुन्छ, यो एक स्ट्रि as को रूप मा निर्दिष्ट गर्नुहोस्।

# os.environ['NEW_KEY'] = 100
# TypeError: str expected, not int

os.environ['NEW_KEY'] = '100'

समारोह os.putenv () पनि प्रदान गरीएको छ। जे होस्, os.environ को मान अपडेट हुदैन जब यो os.putenv () द्वारा सेट गरीन्छ। यस कारण को लागी, यो os.environ को कुञ्जी (वातावरण चर नाम) निर्दिष्ट गर्न को लागी माथिको उदाहरण मा देखाइएको मान तोक्न को लागी राम्रो छ।

यदि putenv () समर्थित छ, os.environ मा एक आइटम को लागी एक असाइनमेन्ट स्वतः putenv () को लागी एक सम्बन्धित कल मा रूपान्तरण गरिनेछ। अभ्यास मा, os.environ मा एक आइटम लाई तोक्न मनपर्ने अपरेशन हो, putenv () को लागी एक सीधा कल os.environ अपडेट हुनेछैन।
os.putenv() — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

जस्तै पहिले उल्लेख गरीएको छ, वातावरण भेरिएबल जोड्ने वा अधिलेखन गरेर बनाइएको परिवर्तन मात्र पाइथन कार्यक्रम भित्र प्रभावी छन्। यसको मतलब यो होइन कि प्रणाली वातावरण चर पुन: लेखीनेछ।

ध्यान दिनुहोस् कि मान परिवर्तन गर्दा ओएस को आधारमा मेमोरी लीक हुन सक्छ।

नोट: केहि प्लेटफर्महरुमा, FreeBSD र म्याक ओएस एक्स सहित, वातावरण को मूल्य परिवर्तन स्मृति लीक हुन सक्छ।
os.putenv() — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

यो ओएस आफैं को putenv () विशिष्टताको कारण हो।

Successive calls to setenv() or putenv() assigning a differently sized value to the same name will result in a memory leak. The FreeBSD seman-tics semantics for these functions (namely, that the contents of value are copied and that old values remain accessible indefinitely) make this bug unavoidable.
Mac OS X Manual Page For putenv(3)

वातावरण चर हटाउनुहोस्

एक पर्यावरण चर मेटाउन को लागी, os.environ को पप () विधि वा डेल कथन को उपयोग गर्नुहोस्। शब्दकोश जस्तै।

तल पप () को एक उदाहरण हो।

pop () मेटिएको वातावरण चर को मान फर्काउँछ। पूर्वनिर्धारित रूपमा, एक वातावरण चर निर्दिष्ट गर्दछ कि अवस्थित छैन एक त्रुटि (KeyError) मा परिणाम हुनेछ, तर दोस्रो तर्क निर्दिष्ट पर्यावरण चर को मान फिर्ता हुनेछ यदि यो अवस्थित छैन।

print(os.environ.pop('NEW_KEY'))
# 100

# print(os.environ.pop('NEW_KEY'))
# KeyError: 'NEW_KEY'

print(os.environ.pop('NEW_KEY', None))
# None

तल डेल को एक उदाहरण हो।

वातावरण चर फेरि जोडिएको छ, र तब मेटाइयो। यदि पर्यावरण चर अवस्थित छैन, एक त्रुटि (KeyError)।

os.environ['NEW_KEY'] = '100'

print(os.getenv('NEW_KEY'))
# 100

del os.environ['NEW_KEY']

print(os.getenv('NEW_KEY'))
# None

# del os.environ['NEW_KEY']
# KeyError: 'NEW_KEY'

समारोह os.unsetenv () पनि प्रदान गरीएको छ। जे होस्, os.putenv () को रूपमा, os.environ को मान अपडेट हुदैन जब यो os.unsetenv () द्वारा मेटाइन्छ। तेसैले, यो os.environ को कुञ्जी (वातावरण चर नाम) निर्दिष्ट गर्न को लागी माथिको उदाहरण मा देखाइएको छ र यसलाई मेटाउन को लागी बेहतर छ।

यदि unsetenv () समर्थित छ, os.environ मा एक आइटम मेटाउने स्वचालित रूपमा unsetenv () को लागी सम्बन्धित कल मा अनुवाद हुनेछ। अभ्यास मा, os.environ मा वस्तुहरु मेटाउन मनपर्ने अपरेशन हो, किनकि unsetenv () लाई प्रत्यक्ष कल os.environ अपडेट हुनेछैन।
os.unsetenv() — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

पर्यावरण भेरिएबल मेटाउने मात्र कि अजगर कार्यक्रम भित्र प्रभावी छ। यो प्रणाली वातावरण चर हटाउन छैन।

परिवर्तन पर्यावरण चर को प्रभाव

जस्तै मैले बारम्बार लेखेको छु, परिवर्तन (सेटि or वा मेटाउने) os.environ वातावरण चर परिवर्तन प्रणाली वातावरण चर परिवर्तन गर्दैन, तर यसले उप-प्रक्रियाहरु लाई प्रभावित गर्दछ जुन कार्यक्रम मा शुरू गरीएको छ।

निम्न कोड विन्डोज मा अपेक्षित रूपमा काम गर्दैन किनकि त्यहाँ कुनै LANG वातावरण चर र मिति आदेश को सामग्री फरक छ।

Subprocess मोड्युल मा मिति आदेश कल गर्दै।

मिति आदेश को आउटपुट परिणाम LANG वातावरण चर को मूल्य मा निर्भर गर्दछ।

print(os.getenv('LANG'))
# ja_JP.UTF-8

print(subprocess.check_output('date', encoding='utf-8'))
# 2018年 7月12日 木曜日 20時54分13秒 JST
# 

os.environ['LANG'] = 'en_US'

print(subprocess.check_output('date', encoding='utf-8'))
# Thu Jul 12 20:54:13 JST 2018
# 

स्पष्टीकरण को लागी, हामीले os.environ मा LANG पर्यावरण चर परिवर्तन गरेका छौं, तर पायथन स्थान नियन्त्रण गर्न को लागी एक स्थानीय मोड्युल प्रदान गर्दछ।

वातावरण चर द्वारा स्विच प्रक्रियाहरु

यो पनि एक पर्यावरण चर को मूल्य अनुसार प्रक्रिया स्विच गर्न सम्भव छ।

यहाँ भाषा सेटिंग्स मा LANG वातावरण चर अनुसार आउटपुट परिवर्तन को एक उदाहरण हो। यहाँ हामी startswith () विधि को उपयोग गरीरहेछौं निर्धारित गर्न को लागी स्ट्रिंग निर्दिष्ट स्ट्रिंग संग शुरू हुन्छ, तर यदि तपाइँ सहि मिलान निर्धारण गर्न चाहानुहुन्छ, तपाइँ तुलना गर्न को लागी “==” प्रयोग गर्न सक्नुहुन्छ।

print(os.getenv('LANG'))
# en_US

if os.getenv('LANG').startswith('ja'):
    print('こんにちは')
else:
    print('Hello')
# Hello

os.environ['LANG'] = 'ja_JP'

if os.getenv('LANG').startswith('ja'):
    print('こんにちは')
else:
    print('Hello')
# こんにちは

यसको अतिरिक्त, यदि पर्यावरण चर विकास वातावरण र उत्पादन वातावरण संकेत गर्न को लागी सेट गरीएको छ, उदाहरण को लागी, तपाइँ यी चर को मूल्यहरु प्राप्त गर्न सक्नुहुन्छ र प्रक्रिया स्विच गर्नुहोस्।

Copied title and URL