Variabel lingkungan bisa dijupuk, dicenthang, disetel (ditambahake utawa ditimpa), lan mbusak ing program Python nggunakake os.en environment. Elinga yen pangowahan sing digawe kanthi nyetel utawa mbusak variabel lingkungan mung efektif ing program Python. Ora ateges variabel lingkungan sistem bakal ditulis maneh.
Informasi ing ngisor iki diwenehake ing kene.
os.environ
- Entuk variabel lingkungan.
- Setel (nambah / nimpa) variabel lingkungan
- Mbusak variabel lingkungan
- Pengaruh ngganti variabel lingkungan
- Ngalih proses miturut variabel lingkungan
Ngimpor lan gunakake modul os. Amarga iku perpustakaan standar, ora dibutuhake instalasi tambahan. Modul subproses uga kalebu ing perpustakaan standar.
import os
import subprocess
os.en Lingkungan
Jinis os.en Lingkungan yaiku os._En environment.
print(type(os.environ))
# <class 'os._Environ'>
os._Environ minangka obyek jinis peta kanthi pasangan kunci lan nilai, lan duwe cara sing padha karo kamus (tipe dict). Jeneng variabel lingkungan minangka kunci, lan regane yaiku nilai.
Isi os.en environment bakal dimuat nalika modul os diimpor. Isi os.en lingkungan ora bakal dianyari sanajan variabel lingkungan sistem diganti kanthi cara liya nalika program mlaku.
Dhaptar ditampilake kanthi print ().
# print(os.environ)
Kaya dene kamus, sampeyan bisa nggunakake cara ing ngisor iki, utawa digunakake kanggo mriksa eksistensi kunci lan nilai.
keys()
values()
Pemrosesan kunci lan nilai biasane padha karo kamus. Tuladhane kaya ing ngisor iki.
Entuk variabel lingkungan.
os.environ[Environment variable name]
Iki bakal ngidini sampeyan entuk nilai variabel lingkungan, nanging yen sampeyan nemtokake jeneng variabel lingkungan sing ora ana, sampeyan bakal entuk kesalahan (KeyError).
print(os.environ['LANG'])
# ja_JP.UTF-8
# print(os.environ['NEW_KEY'])
# KeyError: 'NEW_KEY'
Cara entuk () os.en environment bisa digunakake kanggo entuk nilai gawan yen ora ana. Iki uga padha karo kamus.
print(os.environ.get('LANG'))
# ja_JP.UTF-8
print(os.environ.get('NEW_KEY'))
# None
print(os.environ.get('NEW_KEY', 'default'))
# default
Fungsi os.getenv () uga kasedhiya. Kaya metode get () kamus, ngasilake nilai gawan yen kunci ora ana. Fungsi iki migunani yen sampeyan mung pengin entuk lan mriksa regane variabel lingkungan.
print(os.getenv('LANG'))
# ja_JP.UTF-8
print(os.getenv('NEW_KEY'))
# None
print(os.getenv('NEW_KEY', 'default'))
# default
Setel (nambah / nimpa) variabel lingkungan
os.environ[Environment variable name]
Kanthi menehi nilai kanggo iki, sampeyan bisa nyetel variabel lingkungan.
Nalika jeneng variabel lingkungan anyar ditemtokake, variabel lingkungan mentas ditambahake, lan yen ana jeneng variabel lingkungan sing ana, nilai variabel lingkungan bakal ditimpa.
os.environ['NEW_KEY'] = 'test'
print(os.environ['NEW_KEY'])
# test
os.environ['NEW_KEY'] = 'test2'
print(os.environ['NEW_KEY'])
# test2
Elinga yen menehi tugas liyane kajaba senar bakal nyebabake kesalahan (TypeError). Yen sampeyan pengin menehi angka angka, pilih minangka senar.
# os.environ['NEW_KEY'] = 100
# TypeError: str expected, not int
os.environ['NEW_KEY'] = '100'
Fungsi os.putenv () uga kasedhiya. Nanging, nilai os.en environment ora dianyari nalika disetel dening os.putenv (). Amarga alasan iki, luwih becik nemtokake kunci (jeneng variabel lingkungan) os.en lingkungan lan menehi nilai kaya sing dituduhake ing conto ing ndhuwur.
Yen putenv () didhukung, tugas menyang item ing os.en environment kanthi otomatis bakal diowahi dadi telpon sing cocog karo putenv (). Ing prakteke, menehi item ing os.en environment minangka operasi sing disenengi, amarga telpon langsung menyang putenv () ora bakal nganyari os.en environment.
os.putenv() — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Kaya sing kasebut sadurunge, pangowahan sing digawe kanthi nambah utawa nimpa variabel lingkungan mung efektif ing program Python. Ora ateges variabel lingkungan sistem bakal ditulis maneh.
Elinga yen ngganti regane bisa uga nyebabake bocor memori gumantung karo OS.
Cathetan: Ing sawetara platform, kalebu FreeBSD lan Mac OS X, ngganti nilai lingkungan bisa nyebabake bocor memori.
os.putenv() — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Iki amarga spesifikasi putenv () OS kasebut dhewe.
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)
Mbusak variabel lingkungan
Kanggo mbusak variabel lingkungan, gunakake cara pop () os.en environment utawa del del statement. Padha karo kamus.
Ing ngisor iki minangka conto pop ().
pop () ngasilake rega variabel lingkungan sing wis dihapus. Kanthi gawan, nemtokake variabel lingkungan sing ora ana bakal nyebabake kesalahan (KeyError), nanging yen nemtokake argumen kaping pindho bakal ngasilake nilai variabel lingkungan yen ora ana.
print(os.environ.pop('NEW_KEY'))
# 100
# print(os.environ.pop('NEW_KEY'))
# KeyError: 'NEW_KEY'
print(os.environ.pop('NEW_KEY', None))
# None
Ing ngisor iki minangka conto del.
Variabel lingkungan ditambahake maneh, banjur busak. Yen variabel lingkungan ora ana, kesalahan (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'
Fungsi os.unsetenv () uga kasedhiya. Nanging, kaya karo os.putenv (), regane os.en Lingkungan ora dianyari nalika dirusak dening os.unsetenv (). Mula, luwih becik nemtokake kunci (jeneng variabel lingkungan) os.en lingkungan lan busak kaya sing dituduhake ing conto ing ndhuwur.
Yen unsetenv () didhukung, mbusak item ing os.environ kanthi otomatis nerjemahake menyang panggilan sing cocog karo unsetenv (). Ing prakteke, mbusak item ing os.environ minangka operasi sing disenengi, amarga telpon langsung menyang unsetenv () ora bakal nganyari os.en Lingkungan.
os.unsetenv() — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Mbusak variabel lingkungan uga efektif ing program Python. Ora mbusak variabel lingkungan sistem.
Pengaruh ngganti variabel lingkungan
Kaya sing wis dak tulis bola-bali, ngganti (nyetel utawa mbusak) variabel lingkungan os.en Lingkungan ora ngganti variabel lingkungan sistem, nanging mengaruhi sub-proses sing diluncurake ing program kasebut.
Kode ing ngisor iki ora bakal bisa diarepake kaya ing Windows amarga ora ana variabel lingkungan LANG lan isi prentah tanggal beda.
Nelpon printah tanggal ing modul subproses.
Asil output saka printah tanggal ganti gumantung karo variabel lingkungan 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
#
Kanggo penjelasan, kita wis ngowahi variabel lingkungan LANG ing os.en Lingkungan, nanging Python nyedhiyakake modul lokal kanggo ngontrol lokal.
Ngalih proses miturut variabel lingkungan
Sampeyan uga bisa ngoper proses miturut rega variabel lingkungan.
Mangkene conto ngganti output miturut variabel lingkungan LANG ing setelan basa. Ing kene kita nggunakake metode startswith () kanggo nemtokake manawa senar diwiwiti karo senar sing ditemtokake, nanging yen sampeyan pengin nemtokake match sing pas, sampeyan bisa nggunakake “==” kanggo mbandhingake.
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')
# こんにちは
Kajaba iku, yen variabel lingkungan disetel kanggo nuduhake lingkungan pangembangan lan lingkungan produksi, kayata, sampeyan bisa entuk nilai-nilai variabel kasebut lan ngganti proses kasebut.