ααααααα’ααΆααα’ααααααΆα
ααααααααααα Python ααΊααΆααΆααΆαα½ααααα»αα ααααααΆααΆαααααααΎα αααΎααααα»ααααα»ααα·ααααααααΎααα·αααααΉαααααα·ααααααααα·ααΈαααα½αα―αααα»ααααααα ααα»αααααααααΆαααααααααΌαα αααααΆαα ααΆαααααααααααααα½ααααααααα ααΆαααααα α’αααα’αα·ααααααααΆα αααΎα ααααααααααααΆαααααα½ααααααα½ααα α¬αααααΆααααΉαααΆ ααααΌααααααΆααΆααααΈαααααΆααααΆαααααΎααααΆααααΆαααααααααΆαα ααΆααΆααααααααα ααΎα’αααα Bash α αΆααααααα’α αααααΆαααΆαααΆααααα Bash αα·α Python ααΆααα·ααΈααΆααααααααααααααΆαααα»αααΆααααααααΌα α αΎαααΆααααααααα·ααααα½αα ααα½α αααααΆααααααΆααΆααααα αΌαα’αααα Bash αα ααΆ "ααΆααΆααα" αααααααααΆααααααΆααΆαα·α αα ααΆαααααΆαααΆααα αα·αααααΆαααΈαα·α αα ααΆαααΌα ααΆα α
ααΎααααΈααααΎα±ααααΈαα·αααΆααααααΆααααα½ααααααΆαα devops αααααΆααα αα·αα§αααααααααΎααααΆααααΆαααααααααααΆα
αααΎααα
αααα»α Python ααααΌαααΆααααααΎαα‘αΎα αα·ααααααααααΎαα α’αααααααααα·αααααΆα’αααΈαααααΆαααααααΈα
ααα½αααΈαααααααααΎαα‘αΎααααα’ααααα·αααααααααααΆαααα -
α’αααααΆα
αΆααα’αΆαααααα ααΌαααΎαααααΆα
"ααα" ααααΈ?
ααΆα αΆααααΌα ααΆα ααα»α’αααΈααΆαααΆαααααΎααααα ααααααΈαααααΆααααααα·ααααα·ααΆαααααααΆαααααααΎααΆα? ααΎα’αααΈααΆααΆααα’αααααΈααΆαααααΎααααΆαα os.environ αα·α subprocessα αααααααΆαα?
αααα»αβααΉαβαααααβααααα»ααΆαβαααααΆααβαααααΆαααβααΈαα½ααβαααβα‘ααβααΈβααααΆα
αααααΆααα smart-env
αα»ααααααααααααα·αααααΆαααααα½αααααα’ααα ααΆααΆααααααααααααα»αααΆαα αΌααα ααΆααα’ααΈαααΊαα·α αα·αααααααααααααααααΆααααααααααα½α ααΆααααα α ααΆααΆααα·αααΆαα ααΆαα αΆαα·αααααααΆααα·ααααααααα’αααΈαααα’αααααααΌαααΆα ααα»αααααααααΊααΆ "ααααΉαααα·ααΆαααααΆααΆαααΆαααα" α ααΆααααα½ααα½ααα·ααΈααΆααααααααααΆαααααα·αααααΆααα·ααααααααα ααααααααΆαα·αααΆαααααααΉααααααααΆα αααΎαα
αααβααΎβααΆαβαααααα
- ααΆααααα ααααααα·αααΆαα»αααΆαα α αα ααΆαα os.environ ααα»αααααααα»ααααααΆαα½αααααΆααααααααΌαα±ααααΆααααααααΆαααααΆαααΆα αααΎα (αααααΎαα§ααΆα αααααααααΆαα αααΆαααΆαααααααα·ααααααα»αααΆαα α ααΌαααααααα);
- ααΆααααα ααααα’ααααααααΆαααΆαααΆααααΌαααΆαα ααααΆαααΉαααΉααα ααΉαααααααααα’αααΌααΆααααΆαααα½α (ααΆα ααααααααααααααααααΆαααΌα ααΆ Django) ααΌα ααααα αΎααα·αααΆαααααααααΆααααααααααΆαα―αααΆαααα
- ααΆαααΆαααα»ααααααααααααΎααααΈααααΎα’αααΈαααααααΈα α§ααΆα ααα,
ααααααααΆαααΆαα’αααα αα·αααααααααα’ααααααΆαα αααΆαααααα α αα·ααΈααΆαααααααΌα ααΆget_<typename>(var_name)
α¬αα ααΈααα
αααααααααΆααα½αααααααααα αααααΆαααΆααααααααΈ αα·αααΆαααα Python 2 ααααααα»αα’αΆααα±ααα (ααααααααΈααΆααααΌαααΆα R.I.P. αα ααααΆαααααααααΌαααααα αα·αααααααααα’αααΌα‘αΌαααΈααΆααααΌα); - ααΆααα·ααααααααα·αααααΆααΆ ααααααααΆααα ααα»ααααααα·αααααΆαααα½αα ααα½αααΆααααα αααα αααα»α PyPI ααΆαααΎ α αΎαααααΆαααααααααΎααααα αΆααΆαα½αααΉαααΆαααΆααααααααααα ααααααΈ (ααΆαα·αααααααα "smart-env" ααΊααΆαα·ααΆαααΆαα αΆαααΆα α) α
α αΎααααααΈαααα’αΆα ααααααΆαααΌαα αααααΆαααΆαααΆααααα α ααα»α ααΆαααΎααΊαααααααααΆααα αΎααααααααΎα’αααααα»αααααΎαα αααααααα·αααααΆαααααΎα’αααΈαααααΆααααα½α αα·αααΆαααα
αααααΌαααΆααααααααΌαααΆαααααααα»ααααααααα 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 αααααΆααα·αααααΎα±ααααααΆαααααααααΆαααΆαααα αααα·α αΆααααΆααααααΆααααα·ααααΆαααααααααααΎα ααααααααααααα»ααααααααΆαααααΆααααααααΆαα ααΆααααα»ααααααα ααΆαααααααααααα’αΆα ααααΎααΆααααααΆααααααΎαααααααααααααααα ( ααΆα§ααΆα ααα αα·ααΈααΆαααααααααααααααΆαααααααΌαααΆααααααα αα αααα»α Django ααΆααααα ααΈααααααααααααα»ααααααα ααΆααααααααααΊααΆαααΌαα»α/αααα ααααΆαααααααααα½αααΆ)α
ααΆαααΎα/αα·ααα»αααΆααααα½αααΆαααΆαα’αααααααααααααααααααα·ααααΌαααΆααααααα αααααααΎαα·ααΈααΆαααααααΈα - enable_automatic_type_cast() αα·α disable_automatic_type_cast() α αααα’αΆα ααΆααΆαααΆααααα½α ααααα·αααΎα’αααααα·ααααΆαααΆαααααα»ααΌα JSON ααααα α¬ααααΆααααααΆααα Boolean (αααααα’ααα DEBUG αα αααα»α Django αααααααααααα’αααααα·ααααΆαααΆαα½αααΉαααααα’αααα "ααααΉαααααΌα" ααΊααΆααααΈαα½ααααα»αα ααααααααΈααΌαα αααα»α) α ααα»ααααα₯α‘αΌαααααα·αα αΆαααΆα ααααααααααααα’ααααα αααΆααααΆαααα αααααααΆαα αΆαααΆα αααΆαα αααΎαααααΌαααΆααααααααα αααα»αααααα αααααααΆααααα½α α αΎα α αΎααααα»ααααα αΆααααααΆααΎααααΈααααΎαααααααΆαα π ααΆααΌαα ααΆαααΆαα’ααααααααΎαααΆααααααααααααααΆααΆα αα·αααΆααααααααΎαααααααααααααααα·αααααααααααΆαααααΆαα (ααΆααααΆαα αααα»αααααΆα αα·ααααα·αααααΌαααΆαααΆααααααα)α
αααααΌαααΆαααΎααααΈααΆαααα Python 2 ααααΌαααΆαα’αα»αααααααααααΎαααααααΆαααΆαααααα (ααΆαααααααααΆαααΆαα’αααα αα·α "ααααααααΆαα" αα½αα ααα½αααααααα α»αααααααααα»ααααα Python 3) ααΆαα·αααα’ααα»ααααααΈααααΆααα½α (ααΎααααΈαααααααΆααααα αΆααααΆαααααΎααααΆαα metaclasses )
ααα»ααααααΆαααΆαααΉααααααΉααα½αα ααα½αα
- ααΆαααΆαααα Python 3 ααΆααααααΆαααα 3.5 αα·ααααααααΆαααα (ααααααΆααααααα½ααααα αααα»αααααααααααα’αααααΊααΆααααααααααΆααααα·α α¬ααααααααααΌαααΆααααααΆααααΆααααααα’ αααααΆαααΆαα·ααΆααααα»αααΆααααααααα ααα»αααααααΆα ααα»α’αααΈααΆαααΆα’ααααα αααα ααΎ 3.4);
- αα
αααα»α Python 2.7 αααααΆααααα·αααΆαααα deserialization αααααααααααααααααα ααΆααα·αααααΆ
αα ααΈααα . ααα»ααααααααα·αααΎααααΆααααΆααα ααα’αα»ααααααΆα’αααααααΌαααΆαααααΆαααα :);
αααααΆαααααααΆαααααααΆαααΎααααααααα αααα»αααααΈααΆαααα α»ααααα»αααΆααα·ααΆαα ααααα·αααΎβααααα’ααααβαα·αα’αΆα βααααΌαβααΆαβααα½αααααΆααβαααβα’ααααα·ααΆαβαααβααΆαβααΆαα½αβαα αααααβαα ααβααΆβααααα’αααα (ααΆααΆαβαααααΆααβα ααα»ααβααβααΆαααΆααααα½α αα·αβααΆαβααααΌαβααααΆβαααααααβααΆαα½αααΉαβαααααα·ααααΆβααααααΆβααβααααβαααβα’αααβααααΎαααΆαβαα αααα»α Bash)α
αααααΆααα python-shell
α₯α‘αΌαααααααα»αααΉαααααΆααα’αααα’αααΈαααααΆαααααΈααΈα (αααα»αααΉααα»αα
ααααΆααα·αααααΆα’αααΈα
ααα»α
ααααααΆααα analogues αααααΆαααααΆαα - ααΆααααααααΉαα’αααΈαααααΆααα·αααααΆαααααΆαα smart-env α α’αΆααΆα‘αΌα -
ααΆααΌαα αααα·αααααΆαα’αα»αααα αα·ααααααΌαααΆααααααΆααααΆααΊααααααααααΆαα ααΉαα’αααΈαααααΆααα·αααααΆαααααΆαα 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
αααα·ααααααΊα
- ααααΆαααααα½ααααααααΆαα±αα Bash αα αααα»ααα·αα Python;
- ααΆααααααααΆ Bash ααΈαα½ααααααΌαααΆαααα α ααΆααΆαα»αααΆαααααααΆαα Shell α
- αααααΆαααααααΆαααΆαααααααααααΆααααΆαα α αα»αααΆαααΈαα½ααααααΌαααΆααααααΌααα αααα»αααΆαα α ααΆααααααααΆ Bash αααααααΌαααααΆα
- ααΆααααααααΆααΈαα½ααααααΌαααΆαααααα·ααααα· "αα ααΈααα αα·αα₯α‘αΌαααα" αα ααααααααΆααααΌαααΆαααα α ααΆ, i.e. αα·ααΈααΆαααααααααΎααααΆαααααααααΎαααΆα;
- ααΆααΊα’αΆα ααααΎαα ααΆαααΎααααΈα αΌαααααΎαααΆαααααααααααΆααααααααΆαα αααα»α stdout ααααΌα ααΆαααααΌααααα‘αααααα·αααααααΆ;
- ααααα·αααΎααΆααααααααΆαα·ααααα·ααα αααα»ααααααααααα ααΆαααΎαααααα½αααααΌαααΆααααα ααα
ααΌα αα ααΉα smart-env ααα ααΆααΆαααΆαααΆαααααααααΆαα Python 2 (αααααΈααΆααααΌαααΆαααΆαααΌααΆαα·α αα½α ααααα) αα·ααα·αααΆαααΆαααΆαααααααααΆαα Python 3.0-3.4 ααα
αααααΆαα’αα·αααααααααααΆααα
α’αααα’αΆα ααααΎαααααΆαααα₯α‘αΌααααα ααΆααααΈαααααΌαααΆααααα αααα ααΎ PyPI ααααΌαααΆαα αααααααΆααα ααΎ Github (ααΌαααΎαααΆαααααα)α
αααααΆαααααΆααααΈαααΉαααααΌαααΆαα’αα·ααααααααα·αααΌαααΈααα·αααααα’ααααααααΌαααΆαααΈα’ααααααα αΆααα’αΆααααααα α αΎαααααα·αααΎααΆαααα ααααΆαα·ααΆααααα»αααΆααααααΎααα»αααΆαααααΈαααΆα αααΎααα αααα»α smart-env ααααα αααα»α python-shell αα·αααΆααΆαα’αααΈαααααααααααααααΌαααααααα
- ααΆαααΆαααααααααΆααααΆαα α ααΌααααααααααα·αααΆααΆαα;
- ααααααΆαααααΆαααααΆααααααα’ααααααααααΆαα½ααααα»α (ααααΎααΆαααΆαα½α stdin);
- ααΆααααααααααααααααααααα·ααααΈ (α§ααΆα ααα αααααααααααααα·ααΎααααΈααα½αααΆαααααααααΈ stderr);
- ααΆαα’αα»ααααααααααΆααααααααΆαααααΆα (αααααΆααααααΎααΆαα½ααα»αααΆα dir());
- α αΎαααΌα αααααα ααΎα
ααα ααααΈααα
- αααααΆααα smart-envα
Github ΠΈααΈααΈα’αΆαα - αααααΆααα python-shellα
Github ΠΈααΈααΈα’αΆαα ααΆααα Telegram ααΆαααααΎαα αα α»ααααααααΆααααααΆααα
UPD 23.02.2020α
* ααααΆααααααΌαααΆαααααΆααααΈ αααααααΆαααααααααΌαααααΆααααΌαααΆαααααΎαα
αα
α»ααααααααΆα
* αααα python-shell==1.0.1 αααα»αααααΌαααΆααααα
ααααααΆααααΆαα
ααααααΆααα
ααααααΈ 29.02.2020/XNUMX/XNUMXα ααΆαααααΆααααααΌααα½αααΆαααΆαααΆαααααααααΆααααΆααααααααΆααααααααΆαααααααααααααααα· αα·αααΆααααααααΆ dir(Shell) ααΆαααααΎαααΆαααΆααααααααΆααΆαα½αα§ααααααααααα’ααααααααΆα Python αα·αααααΉαααααΌα αα·αααΆααααααααΆαααα α»αα
ααααα: www.habr.com