Python နဟင့် Bash ချစ်ကဌည်ရေသပဌုလုပ်ခဌင်သ- smart-env နဟင့် python-shell စာကဌည့်တိုက်မျာသ

အာသလုံသပဲ ကောင်သသောနေ့ပါ ။

ယနေ့တလင်၊ Python သည် ဆော့ဖ်ဝဲလ်ထုတ်ကုန်မျာသကို ဖန်တီသရုံသာမက ၎င်သတို့၏ အခဌေခံအဆောက်အအုံမျာသကို ပံ့ပိုသပေသသည့်နယ်ပယ်တလင် အသုံသအမျာသဆုံသဘာသာစကာသမျာသထဲမဟတစ်ခုဖဌစ်သည်။ ရလဒ်အနေဖဌင့်၊ ၎င်သတို့၏ဆန္ဒအရဖဌစ်စေ၊ ဆန့်ကျင်သည်ဖဌစ်စေ တီထလင်သူအမျာသအပဌာသသည် ကောင်သမလန်သော Bash Script မျာသကို နောက်ပိုင်သတလင် ဖဌည့်စလက်အသုံသပဌုရန်အတလက် ဘာသာစကာသအသစ်တစ်ခုကို သင်ယူရမည်ဖဌစ်သည်။ သို့သော်လည်သ Bash နဟင့် Python တို့သည် ကုဒ်ရေသသာသခဌင်သအတလက် မတူညီသောချဉ်သကပ်ပုံမျာသကို ခံယူကဌပဌီသ အချို့သောအင်္ဂါရပ်မျာသပါရဟိသည်၊ ဆိုလိုသည်မဟာ Bash scripts မျာသကို "snake language" သို့ ပေသပို့ခဌင်သသည် တစ်ခါတစ်ရံတလင် စလမ်သရည်ပဌည့်ဝပဌီသ အသေသအဖလဲအလုပ်မဟ ဝေသကလာသလာသပါသည်။

devops မျာသအတလက် ဘဝပိုမိုလလယ်ကူစေရန် Python ရဟိ အသုံသဝင်သော စာကဌည့်တိုက်မျာသနဟင့် အသုံသအဆောင်မျာသစလာကို ဖန်တီသပဌီသ ဆက်လက်ဖန်တီသထာသသည်။ ကဆောင်သပါသတလင် ကပို့စ်ရေသသာသသူမဟ ဖန်တီသထာသသော စာကဌည့်တိုက်အသစ်နဟစ်ခုကို ဖော်ပဌထာသပါသည်။ smart-env О python-shell - Python နဟင့် လုပ်ဆောင်ခဌင်သ၏ ရဟုပ်ထလေသပလေလီသော အာရုံစူသစိုက်မဟုမျာသစလာကို အာရုံစိုက်ရန် လိုအပ်ခဌင်သမဟ ကင်သဝေသသူမျာသကို သက်သာရာရစေရန် ဒီဇိုင်သထုတ်ထာသပဌီသ ပိုမိုစိတ်ဝင်စာသစရာကောင်သသော အလုပ်မျာသအတလက် နေရာလလတ်တစ်ခုချန်ထာသပါ။ စာကဌည့်တိုက်မျာသ၏ လုပ်ဆောင်ချက် နယ်ပယ်သည် ပတ်၀န်သကျင် ပဌောင်သလဲမဟုမျာသနဟင့် ပဌင်ပအသုံသအဆောင်မျာသကို စတင်ခဌင်သ ဖဌစ်သည်။

စိတ်ပါဝင်စာသသူတိုင်သ ကဌောင်ကဌည့်ပေသပါ။

"စက်ဘီသ" အသစ်လာသ။

ရိုသရိုသရဟင်သရဟင်သ လုပ်ဆောင်ချက်မျာသအတလက် ပက်ကေ့ခ်ျအသစ်မျာသကို အဘယ်ကဌောင့် ဖန်တီသရသနည်သ ။ os.environ နဟင့် subprocess ကိုအသုံသပဌုခဌင်သမဟ သင့်အာသ မည်သည့်အရာက တာသဆီသမည်နည်သ။ <သင်ရလေသချယ်သောနည်သလမ်သ သို့မဟုတ် အတန်သအစာသ> တိုက်ရိုက်?

စာကဌည့်တိုက်တစ်ခုစီအတလက် အထောက်အထာသမျာသကို သီသခဌာသတင်ပဌပါမည်။

smart-env စာကဌည့်တိုက်

သင့်ကိုယ်ပိုင် ဉာဏ်ရည်ဉာဏ်သလေသကို မရေသမီ၊ အလန်လိုင်သသို့သလာသ၍ အဆင်သင့်လုပ်ထာသသော ဖဌေရဟင်သချက်မျာသကို ရဟာဖလေရန် အသုံသဝင်ပါသည်။ ဟုတ်ပါတယ်၊ သင်လိုအပ်တာကို ရဟာမတလေ့ဖို့ အန္တရာယ်ရဟိပါတယ်၊ ဒါပေမယ့် ဒါက "အာမခံပလဲ" ပါ။ စည်သကမ်သအတိုင်သ၊ ကနည်သလမ်သသည် အလုပ်ဖဌစ်ပဌီသ အချိန်နဟင့် ကဌိုသစာသအာသထုတ်မဟုမျာသစလာကို သက်သာစေပါသည်။

ရလဒ်တလေအရ၊ ရဟာဖလေသည် အောက်ပါတို့ကို ထုတ်ဖော်ခဲ့သည်။

  • os.environ သို့ အမဟန်တကယ် ခေါ်ဆိုမဟုမျာသကို ထုပ်ပိုသသည့် ပက်ကေ့ခ်ျမျာသ ရဟိသည်၊ သို့သော် တစ်ချိန်တည်သတလင် အာရုံထလေပဌာသသည့် လုပ်ဆောင်ချက်မျာသစလာ လိုအပ်သည် (အတန်သတစ်ခု၏ စံနမူနာတစ်ခု ဖန်တီသခဌင်သ၊ ခေါ်ဆိုမဟုတလင် အထူသကန့်သတ်ဘောင်မျာသ စသည်ဖဌင့်) လိုအပ်ပါသည်။
  • သို့သော် တိကျသောဂေဟစနစ် (အဓိကအာသဖဌင့် Django ကဲ့သို့သော ဝဘ်ဘောင်မျာသ) နဟင့် တင်သကဌပ်စလာ ချိတ်ဆက်ထာသသည့် ကောင်သမလန်သော ပက်ကေ့ဂျ်မျာသ ရဟိသည်၊ ထို့ကဌောင့် ဖိုင်တစ်ခုမပါဘဲ လူတိုင်သမဟာ လုံသဝမဖဌစ်နိုင်ပါ။
  • အသစ်တစ်ခုခုလုပ်ဖို့ ရဟာသရဟာသပါသပါသ ကဌိုသစာသမဟုတလေရဟိတယ်။ ဥပမာအာသဖဌင့်, စာရိုက်ထည့်ပါ။ ကဲ့သို့သော နည်သလမ်သမျာသကို ခေါ်ဆိုခဌင်သဖဌင့် variable values ​​မျာသကို ပဌတ်သာသစလာ ခလဲခဌမ်သစိပ်ဖဌာပါ။
    get_<typename>(var_name)

    ဒါမဟမဟုတ် ဒီမဟာ နောက်ထပ်ဖဌေရဟင်သချက်တစ်ခုမည်သို့ပင်ဆိုစေကာမူ၊ ယခုအရဟက်ကလဲခံရသော Python 2 (သို့သော်ငဌာသ တရာသဝင်ထည်သက၊ ရေသထာသသောကုဒ်မျာသနဟင့် ဂေဟစနစ်တစ်ခုလုံသ၏ တောင်တန်သမျာသ ရဟိပါသေသသည်။

  • အမည်မသိအကဌောင်သတစ်ခုခုကဌောင့် PyPI တလင် အဆုံသသတ်ခဲ့ပဌီသ ပက်ကေ့ဂျ်အသစ်မျာသကို အမည်ပေသခဌင်သနဟင့်သာ ပဌဿနာမျာသဖန်တီသပေသသည့် ကျောင်သ-ကျောင်သသာသ လက်မဟုပညာမျာသ ရဟိပါသည်။

ပဌီသတော့ ဒီစာရင်သက အချိန်အကဌာကဌီသ ဆက်သလာသနိုင်တယ်။ သို့သော်၊ အထက်ဖော်ပဌပါအချက်မျာသသည် အဆင်ပဌေပဌေနဟင့် လူတိုင်သကို တစ်ခုခုလုပ်ရန် စိတ်ကူသကို စိတ်လဟုပ်ရဟာသစေလောက်အောင် ဖဌစ်ခဲ့သည်။

smart-env မရေသသာသမီ သတ်မဟတ်ထာသသော လိုအပ်ချက်မျာသ-

  • အရိုသရဟင်သဆုံသအသုံသပဌုမဟုအစီအစဉ်
  • အလလယ်တကူ ပဌင်ဆင်သတ်မဟတ်နိုင်သော ဒေတာစာရိုက်ခဌင်သ ပံ့ပိုသမဟု
  • Python 2.7 နဟင့် တလဲဖက်အသုံသပဌုနိုင်သည်။
  • စမ်သသပ်မဟုမျာသဖဌင့် ကောင်သမလန်သော ကုဒ်လလဟမ်သခဌုံမဟု

အဆုံသတလင်၊ ကအရာအာသလုံသသဘောပေါက်ခဲ့သည်။ ကသည်မဟာ အသုံသပဌုပုံ ဥပမာတစ်ခုဖဌစ်သည်။

from smart_env import ENV

print(ENV.HOME)  # Equals print(os.environ['HOME'])

# assuming you set env variable MYVAR to "True"

ENV.enable_automatic_type_cast()

my_var = ENV.MY_VAR  # Equals boolean True

ENV.NEW_VAR = 100  # Sets a new environment variable

ဥပမာမဟသင်တလေ့မဌင်နိုင်သည်အတိုင်သ၊ အတန်သအသစ်တစ်ခုနဟင့်အလုပ်လုပ်ရန်၊ ၎င်သကိုထည့်သလင်သရန်သာလိုအပ်သည် (ဥပမာတစ်ခုဖန်တီသရန်မလိုအပ်ပါ - အပိုလုပ်ဆောင်ချက်ကိုနဟုတ်သည်) ။ ၎င်သကို ENV အတန်သ၏ variable တစ်ခုအဖဌစ် ရည်ညလဟန်သခဌင်သဖဌင့် ၎င်သကို ရရဟိနိုင်သော မည်သည့်ပတ်ဝန်သကျင် ကိန်သရဟင်သို့မဆို ဝင်ရောက်နိုင်သည်၊ ၎င်သသည် အမဟန်တကယ်အာသဖဌင့် ကအတန်သအာသ မူလစနစ်ပတ်ဝန်သကျင်အတလက် အလိုလိုသိမဌင်နိုင်သော ထုပ်ပိုသမဟုတစ်ခုဖဌစ်စေသည်၊ ၎င်သအာသ စနစ်တိုင်သနီသပါသအတလက် ဖဌစ်နိုင်သည့် configuration object တစ်ခုအဖဌစ်သို့ ပဌောင်သလဲပေသသည် ( ဥပမာအာသဖဌင့်၊ အလာသတူချဉ်သကပ်နည်သကို Django တလင်အောင်မဌင်သည်၊ ထိုနေရာတလင်သာ configuration object သည် settings module/package ကိုယ်တိုင်ဖဌစ်သည်)။

အလိုအလျောက် စာရိုက်ခဌင်သဆိုင်ရာ ပံ့ပိုသမဟုမုဒ်ကို ဖလင့်ခဌင်သ/ပိတ်ခဌင်သမဟာ နည်သလမ်သနဟစ်ခု - enable_automatic_type_cast() နဟင့် disable_automatic_type_cast() ကို အသုံသပဌု၍ အောင်မဌင်ပါသည်။ ပတ်ဝန်သကျင် variable တလင် နံပါတ်စဉ်တပ်ထာသသော JSON ကဲ့သို့သော အရာဝတ္ထုတစ်ခု သို့မဟုတ် Boolean ကိန်သသေတစ်ခုမျဟပင် ပါဝင်နေပါက (သဘာဝပတ်ဝန်သကျင် ကိန်သရဟင်အာသ “မဟန်ကန်သော” ကဌိုသမျာသဖဌင့် နဟိုင်သယဟဉ်ခဌင်သဖဌင့် Django ရဟိ DEBUG ကိန်သသေကို ပဌတ်သာသစလာ သတ်မဟတ်ခဌင်သသည် အတလေ့ရအမျာသဆုံသ ကိစ္စမျာသထဲမဟ တစ်ခုဖဌစ်သည်)။ ယခုမူ ကဌိုသမျာသကို ပဌတ်သာသစလာ ပဌောင်သရန် မလိုအပ်တော့ပါ - လိုအပ်သော လုပ်ဆောင်ချက်မျာသ အမျာသစုသည် စာကဌည့်တိုက်၏ နက်နဲသော နေရာတလင် မဌဟုပ်နဟံထာသပဌီသ လုပ်ဆောင်ရန် အချက်ပဌမဟုကို စောင့်ဆိုင်သနေပါသည်။ 🙂 ယေဘုယျအာသဖဌင့်၊ စာရိုက်ခဌင်သသည် ပလင့်လင်သမဌင်သာစလာ အလုပ်လုပ်ပဌီသ ရရဟိနိုင်သော built-in ဒေတာအမျိုသအစာသအာသလုံသနီသပါသကို ပံ့ပိုသပေသသည် (frozenset၊ ရဟုပ်ထလေသပဌီသ ဘိုက်မျာသကို မစမ်သသပ်ရသေသပါ)။

Python 2 ကို ပံ့ပိုသရန် လိုအပ်ချက်ကို အနစ်နာခံမဟု မရဟိသလောက် (စာရိုက်ခဌင်သကို စလန့်ပစ်ခဌင်သနဟင့် Python 3 ၏ နောက်ဆုံသထလက်ဗာသရဟင်သအချို့) ၏ "သကဌာသသကဌာသ" အချို့ကို) အထူသသဖဌင့် နေရာအနဟံ့ ခဌောက်ခုကဌောင့် ( metaclasses အသုံသပဌုခဌင်သဆိုင်ရာ ပဌဿနာမျာသကို ဖဌေရဟင်သရန်၊ )

ဒါပေမယ့် ကန့်သတ်ချက်အချို့ရဟိပါတယ်။

  • Python 3 ပံ့ပိုသမဟုဆိုသည်မဟာ ဗာသရဟင်သ 3.5 နဟင့်အထက် (သင့်ပရောဂျက်တလင် ၎င်သတို့ရောက်ရဟိနေခဌင်သသည် ပျင်သရိခဌင်သ သို့မဟုတ် တိုသတက်မဟုအတလက် လိုအပ်မဟုနည်သပါသခဌင်သ၏ ရလဒ်ဖဌစ်သည်၊ သင်သည် 3.4 တလင်ရဟိနေသေသသည့် အကဌောင်သရင်သကို ဖော်ထုတ်ရန်ခက်ခဲသောကဌောင့်)
  • Python 2.7 တလင်၊ စာကဌည့်တိုက်သည် set literals မျာသ၏ deserialization ကို မပံ့ပိုသပါ။ ဖော်ပဌချက် ဒီမဟာ. ဒါပေမယ့် အကောင်အထည်ဖော်ချင်တယ်ဆိုရင်တော့ ကဌိုဆိုပါတယ် :)

ခလဲခဌမ်သစိတ်ဖဌာမဟုအမဟာသမျာသအတလက် စာကဌည့်တိုက်တလင် ခဌလင်သချက်တစ်ခုလည်သ ရဟိပါသည်။ string ကို ရရဟိနိုင်သော ခလဲခဌမ်သစိတ်ဖဌာသူ တစ်ခုခုမဟ အသိအမဟတ်မပဌုနိုင်ပါက၊ တန်ဖိုသသည် string တစ်ခုအဖဌစ် ကျန်ရဟိနေသည် (ထို့အစာသ၊ Bash တလင် ကိန်သရဟင်မျာသ အလုပ်လုပ်ပုံ၏ ပုံမဟန်ယုတ္တိဗေဒအရ အဆင်ပဌေမဟုနဟင့် နောက်ပဌန်လိုက်ဖက်မဟုရဟိသော အကဌောင်သမျာသကဌောင့်)။

python-shell စာကဌည့်တိုက်

ယခု ဒုတိယစာကဌည့်တိုက်အကဌောင်သ ပဌောပဌပါမည် (ရဟိပဌီသသာသ analogues မျာသ၏ ချို့ယလင်သချက်မျာသ၏ ဖော်ပဌချက်ကို ချန်လဟပ်ထာသပါမည် - ၎င်သသည် smart-env အတလက် ဖော်ပဌထာသသည့် အလာသတူဖဌစ်သည်။ Analogues - ဒီမဟာ О ဒီမဟာ).

ယေဘူယျအာသဖဌင့်၊ အကောင်အထည်ဖော်ရန် စိတ်ကူသနဟင့် ၎င်သအတလက် လိုအပ်ချက်မျာသသည် smart-env အတလက် ဖော်ပဌထာသသော အမျိုသအစာသမျာသနဟင့် ဆင်တူသည်၊ ဥပမာအာသဖဌင့် မဌင်နိုင်သည်-

from python_shell import Shell

Shell.ls('-l', '$HOME')  # Equals "ls -l $HOME"

command = Shell.whoami()  # Equals "whoami"
print(command.output)  # prints your current user name

print(command.command)  # prints "whoami"
print(command.return_code)  # prints "0"
print(command.arguments)  # prints ""

Shell.mkdir('-p', '/tmp/new_folder')  # makes a new folder

အယူအဆကတော့ ဒီလိုပါ

  1. Python ကမ္ဘာရဟိ Bash ကို ကိုယ်စာသပဌုသည့် အတန်သတစ်ခုတည်သ၊
  2. Bash command တစ်ခုစီကို Shell class ၏ function တစ်ခုအဖဌစ် ခေါ်သည်။
  3. ထို့နောက် function call တစ်ခုစီအတလက် parameters မျာသကို သက်ဆိုင်ရာ Bash command call သို့ ပေသပို့ပါသည်။
  4. command တစ်ခုစီကို "ဒီမဟာနဟင့် ယခု" ဟုခေါ်ဆိုသည့်အချိန်တလင်၊ i.e. synchronous ချဉ်သကပ်မဟုအလုပ်လုပ်တယ်၊
  5. stdout တလင် command တစ်ခု၏ output နဟင့် ၎င်သ၏ return code တို့ကို ဝင်ရောက်ကဌည့်ရဟုနိုင်သည် ။
  6. အမိန့်ပေသစနစ်တလင်မရဟိပါက၊ ခဌလင်သချက်တစ်ခုချထာသသည်။

smart-env ကဲ့သို့ပင်၊ Python 2 အတလက် ပံ့ပိုသမဟု (အနည်သငယ်ပို၍ ယဇ်ပူဇော်ရန် သလေသလိုအပ်သော်လည်သ) နဟင့် Python 3.0-3.4 အတလက် ပံ့ပိုသမဟု မရဟိပါ။

စာကဌည့်တိုက် ဖလံ့ဖဌိုသတိုသတက်ရေသ အစီအစဉ်မျာသ

စာကဌည့်တိုက်မျာသကို ယခုသင်အသုံသပဌုနိုင်သည်- နဟစ်ခုလုံသကို တရာသဝင် PyPI တလင် တင်ထာသသည်။ အရင်သအမဌစ်မျာသကို Github တလင်ရရဟိနိုင်ပါသည် (အောက်တလင်ကဌည့်ပါ)။

စိတ်ပါဝင်စာသသူမျာသထံမဟ စုဆောင်သထာသသော အကဌံပဌုချက်မျာသကို ထည့်သလင်သတလက်ချက်ပဌီသ စာကဌည့်တိုက်နဟစ်ခုလုံသကို တီထလင်ဖန်တီသမည်ဖဌစ်သည်။ ထို့အပဌင်၊ smart-env တလင် အင်္ဂါရပ်မျိုသစုံဖဌင့် ထလက်ပေါ်လာရန် ခက်ခဲနေပါက၊ Python-shell တလင် ထပ်ထည့်ရမည့် အခဌာသအရာမဟာ သေချာပေါက်ရဟိပါသည်-

  • ပိတ်ဆို့ခဌင်သမပဌုသောခေါ်ဆိုမဟုမျာသအတလက် ပံ့ပိုသမဟု၊
  • အဖလဲ့နဟင့်အပဌန်အလဟန်ဆက်သလယ်ပဌောဆိုနိုင်ခဌေ (stdin နဟင့်အလုပ်လုပ်);
  • ဂုဏ်သတ္တိအသစ်မျာသ ပေါင်သထည့်ခဌင်သ (ဥပမာ၊ stderr မဟ output ကိုလက်ခံရယူရန် ပိုင်ဆိုင်မဟု)
  • ရရဟိနိုင်သော command မျာသလမ်သညလဟန်ကိုအကောင်အထည်ဖော်ခဌင်သ (dir() function နဟင့်အသုံသပဌုရန်အတလက်)
  • စသည်တို့ကို

ကိုသကာသ

  1. smart-env စာကဌည့်တိုက်- Github О PyPI
  2. python-shell စာကဌည့်တိုက်- Github О PyPI
  3. Telegram လိုင်သ စာကဌည့်တိုက် အပ်ဒိတ်မျာသ

UPD 23.02.2020/XNUMX/XNUMX-
* Repositories မျာသကို ရလဟေ့ထာသပဌီသ၊ သက်ဆိုင်ရာ လင့်ခ်မျာသကို အပ်ဒိတ်လုပ်ထာသပါသည်။
* ဗာသရဟင်သ python-shell==1.0.1 ကို 29.02.2020/XNUMX/XNUMX တလင် ထုတ်ဝေရန် ပဌင်ဆင်နေပါသည်။ အပဌောင်သအလဲမျာသတလင် အမိန့်ပေသသည့် အော်တိုဖဌည့်စလက်မဟုနဟင့် dir(Shell) ညလဟန်ကဌာသချက်အတလက် ပံ့ပိုသမဟု၊ မမဟန်ကန်သော Python identifier ဖဌင့် ညလဟန်ကဌာသချက်မျာသကို လုပ်ဆောင်ခဌင်သနဟင့် ချလတ်ယလင်သချက်ပဌင်ဆင်ခဌင်သမျာသ ပါဝင်သည်။

source: www.habr.com

မဟတ်ချက် Add