পরিবেশের পরিবর্তনশীল মানগুলি কীভাবে অ্যাক্সেস করবেন?


2112

আমি একটি পরিবেশ পরিবর্তনশীল সেট করেছি যা আমি আমার পাইথন অ্যাপ্লিকেশনটিতে অ্যাক্সেস করতে চাই। আমি এর মূল্য কীভাবে পাব?

উত্তর:


3158

পরিবেশের ভেরিয়েবলগুলি os.en পরিবেশের মাধ্যমে অ্যাক্সেস করা হয়

import os
print(os.environ['HOME'])

অথবা আপনি ব্যবহার করে সমস্ত পরিবেশের ভেরিয়েবলের একটি তালিকা দেখতে পাবেন:

os.environ

কখনও কখনও আপনার একটি সম্পূর্ণ তালিকা দেখার প্রয়োজন হতে পারে!

# using get will return `None` if a key is not present rather than raise a `KeyError`
print(os.environ.get('KEY_THAT_MIGHT_EXIST'))

# os.getenv is equivalent, and can also give a default value instead of `None`
print(os.getenv('KEY_THAT_MIGHT_EXIST', default_value))

উইন্ডোজে পাইথন ডিফল্ট ইনস্টলেশন হয় C:\Python। অজগর চালানোর সময় আপনি যদি তা জানতে চান তবে আপনি এটি করতে পারেন:

import sys
print(sys.prefix)

1
হ্যালো রড, 'ডিফল্ট-ইনস্টলেশন' সংক্রান্ত আপনার কার্যকর উত্তরের জন্য ধন্যবাদ; লিঙ্কগুলির মধ্যে দিয়ে যাওয়ার পরিবর্তে দ্রুত বুঝতে এটির দৃষ্টিভঙ্গিতে কার্যকর। এটি সত্যই আমি প্রশংসা করেছি :) তবে আমার (1) প্রশ্ন সম্পর্কে দয়া করে নীচের কমান্ডটি দেখুন এবং স্নিপেটটি আউটপুট করুন: >>> ওএস >> আমদানি করুন >>> os.en পরিবেশ প্রিন্ট করুন ['পাইথনপথ'] ট্রেসব্যাক (সর্বশেষতম কল শেষ): ফাইল " <console> ", লাইন 1, <Module> ফাইল" সি: \ পাইথন 25 \ lib \ os.py ", লাইন 435, getitem রিটার্নে স্ব.ডাটা [key.upper ()] কীআরার: 'পাইথনপ্যাট' >>> মুদ্রণ os.en वातावरण.get ('পাইথনপথ') কিছুই >>> // PLZ চালিয়ে যেতে হবে ... //
অমিত যাদব

1 ম উপায়ের মধ্যে স্ক্রিপ্টটি ব্যতিক্রম ছোঁড়াচ্ছে যেখানে 2 য়টি কিছুই দেয় না। সুতরাং, এর অর্থবহ মূল্য পাওয়ার কোনও উপায় আছে বা আমি কোনও ভুল উপায়ে করছি ??? অমিত।
অমিত যাদব

7
os.en वातावरण একটি অভিধান। অভিধানে উপস্থিত নেই এমন একটি কীটি অ্যাক্সেস করার চেষ্টা করা একটি কীআরর ফেলে দেবে। কীটি উপস্থিত না থাকলে প্রাপ্তির পদ্ধতিটি কেবল কোনওটিই দেয় না। আপনার কি পাইথনপথ সেট আছে? আপনি কি PATH এর মতো কোনও ভেরিয়েবল দিয়ে চেষ্টা করতে পারেন, এটির নিশ্চয়তা রয়েছে? এটি একটি অর্থবহ মান ফিরে আসে?
রড

2
পাইথনপথ পাইথনের বাইরে থেকে পাইথন (sys.path) এ নতুন অনুসন্ধানের পথ যোগ করতে ব্যবহৃত হয়। ডকস.পিথন.আর / ব্যবহার
রড

11
.get()একটি ডিফল্ট দেওয়া যেতে পারে।
গ্রিঙ্গো সুভেভ

242

কীটি বিদ্যমান কিনা তা পরীক্ষা করতে (রিটার্ন দেয় Trueবা False)

'HOME' in os.environ

get()কীটি প্রিন্ট করার সময় আপনি ব্যবহার করতে পারেন ; দরকারী যদি আপনি একটি ডিফল্ট ব্যবহার করতে চান।

print(os.environ.get('HOME', '/home/username/'))

/home/username/ডিফল্ট কোথায়


3
কোনটি ভাল, "HOME" in os.environবা os.environ.get('HOME')?
এন্ডোলিথ

11
@endolith তারা বিভিন্ন কাজ করে। প্রথমটি সত্য বা মিথ্যা প্রদান করে, যখন দ্বিতীয়টি কোনও মান দেয়, সম্ভবত কোনওটিই দেয় না।
ট্রেন্টন

@ এন্ডোলিথ, সঠিক প্রশ্নটি "HOME" in os.environবনাম হোক os.environ.get('HOME') is None। আপনি প্রথম দেখতে পাচ্ছেন যে কাজ করার জন্য অনেক বেশি পাঠযোগ্য এবং আরামদায়ক।
কনস্ট্যান্টিন সেকেরেশ

58

মূল প্রশ্নটি (প্রথম অংশ) ছিল "কীভাবে পাইথনে পরিবেশের ভেরিয়েবলগুলি পরীক্ষা করা যায়"।

এখানে $ এফইও সেট করা আছে কি না তা পরীক্ষা করে দেখুন:

try:  
   os.environ["FOO"]
except KeyError: 
   print "Please set the environment variable FOO"
   sys.exit(1)

66
Os.en পরিবেশে "এফইওউ"
ইলফোনসো

4
চেষ্টা দ্রুত হতে পারে। : Env ক্ষেত্রে Vars সম্ভবত 'ব্যবহার করে দেখুন' জন্য সবচেয়ে ভাল হয় stackoverflow.com/a/1835844/187769
RandomInsano

13
@ র্যান্ডমআইনসানো আরও দ্রুত = / = আরও ভাল। এই কোডটি কোনও "if 'FOO' not in os.environ: ..."ব্লকের চেয়ে কম পঠনযোগ্য বলে মনে হচ্ছে
ড্যাঞ্জারক্রো

44

আপনি পরিবেশের ভেরিয়েবলগুলি ব্যবহার করে অ্যাক্সেস করতে পারেন

import os
print os.environ

পাইথনপথ বা পাইথনহোম এনভায়রনমেন্ট ভেরিয়েবলের বিষয়বস্তু দেখার চেষ্টা করুন, সম্ভবত এটি আপনার দ্বিতীয় প্রশ্নের জন্য সহায়ক হবে। তবে আপনার এটি পরিষ্কার করা উচিত।


29

পরিবেশের পরিবর্তনশীল হিসাবে:

import os
print os.environ["HOME"]

আমি ভয় পাচ্ছি যে একটি শালীন উত্তর পাওয়া সম্ভব হওয়ার আগে আপনাকে নিজের দ্বিতীয় পয়েন্টটি আরও কিছুটা জানাতে হবে।


27
import os
for a in os.environ:
    print('Var: ', a, 'Value: ', os.getenv(a))
print("all done")

এটি তাদের মানগুলির সাথে সমস্ত পরিবেশের ভেরিয়েবল মুদ্রণ করবে।


27

আসলে এটি এখান থেকে করা যেতে পারে:

import os

for item, value in os.environ.items():
    print('{}: {}'.format(item, value))

বা সহজভাবে:

for i, j in os.environ.items():
    print(i, j)

প্যারামিটারে মানটি দেখার জন্য:

print(os.environ['HOME'])

বা:

print(os.environ.get('HOME')

মান সেট করতে:

os.environ['HOME'] = '/new/value'

4
না, এই উত্তরটি বিদ্যমান উত্তরের উপরে সত্যিই কিছু যুক্ত করে না
বার্ট

1
এটি অপসারণ করা উচিত, এটি অন্যান্য উত্তরের সদৃশ। str.formatএটি একটি অভিনব সংযোজন।
কানেক্টইউরচার্জার

>>> import os, pprint; pprint.pprint(list(os.environ.items()))
noobninja

18

আপনি যদি
জ্যাঙ্গো / ফ্লাস্কের মতো কোনও ওয়েব কাঠামো ব্যবহার করে কোনও প্রোডাকশন ওয়েব অ্যাপ্লিকেশন কোডে কোডটি ব্যবহার করার পরিকল্পনা করছেন , এনভপার্সির মতো প্রকল্পগুলি ব্যবহার করুন, এটি ব্যবহার করে আপনি মানটিকে আপনার সংজ্ঞায়িত প্রকার হিসাবে পড়তে পারেন।

from envparse import env
# will read WHITE_LIST=hello,world,hi to white_list = ["hello", "world", "hi"]
white_list = env.list("WHITE_LIST", default=[]) 
# Perfect for reading boolean
DEBUG = env.bool("DEBUG", default=False)

দ্রষ্টব্য: kennethreitz এর কেনেথ্রিটিজের অটেনভ প্রকল্প নির্দিষ্ট পরিবেশের ভেরিয়েবলগুলি তৈরি করার জন্য প্রস্তাবিত সরঞ্জাম, দয়া করে নোট করুন যে যারা ব্যবহার করছেন তারা autoenvদয়া করে .envফাইলটি ব্যক্তিগত রাখুন (জনসাধারণের কাছে অ্যাক্সেসযোগ্য)


11

এখানে অনেকগুলি দুর্দান্ত গ্রন্থাগার রয়েছে। উদাহরণস্বরূপ এনভগুলি আপনাকে আপনার পরিবেশের ভেরিয়েবলগুলির বাইরে বস্তুগুলি পার্স করার অনুমতি দেবে যা রেড। উদাহরণ স্বরূপ:

from envs import env
env('SECRET_KEY') # 'your_secret_key_here'
env('SERVER_NAMES',var_type='list') #['your', 'list', 'here']

3

জ্যাঙ্গোর জন্য দেখুন ( https://github.com/joke2k/django-en वातावरण )

$ pip install django-environ

import environ
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()

# False if not in os.environ
DEBUG = env('DEBUG')

# Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')

0

আপনি এটি চেষ্টা করতে পারেন

প্রথমে ইনস্টল করুন python-decouple

pip install python-decouple

এটি আপনার ফাইলে আমদানি করুন

from decouple import config

তারপরে এনভ ভেরিয়েবলটি পাবেন

SECRET_KEY=config('SECRET_KEY')

পাইথন লাইব্রেরি সম্পর্কে এখানে আরও পড়ুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.