á¡á¬ážáá¯á¶ážáá² áá±á¬ááºážáá±á¬áá±á·áá«!
áá±áá±á¬áºáá«áá®á 29 2020 ááŸá
áºáá±á«ááºáž áá±ážáááºáá±á¬ á
á¬ááŒáá·áºááá¯ááºáá»á¬áž ááá¬ážááẠáá¯ááºáá±ááŸá¯ ááŒá¯áá¯ááºáá²á·áá«áááºá smart-env О python-shell. ááááá±ážáá²á·áá°ááœá±á¡ááœáẠá¡áááºáááºááŒáá·áºááá¯á· á¡ááŒá¶ááŒá¯áá»ááºáá«áááºá
á¡ááá¯áá»á¯ááºá¡á¬ážááŒáá·áºá á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááœáẠá¡áááá·áºáá±ážááŒááºážá ááœááºáááºážáá»á¬ážáá¯ááºáá±á¬ááºááŒááºážá¡ááœáẠááá¯ážáá»á²á·áá¯ááºáá±á¬ááºááá¯ááºá áœááºážá á¡áá»áá¯á·áá±á¬ ááŒááºáááºááŒá¯ááŒááºááŒááºážááŸáá·áº áá»áœááºááœááºážáá»ááºááŒááºáááºááŒááºážáá»á¬áž áá«áááºáááºá
á¡áá±ážá
áááºá¡ááœáẠáá»á±ážáá°ážááŒá¯á ááŒá±á¬ááºááá¯ááŒáá·áºáá«á
python-shell ááŸá¬ áá¬á¡áá áºáá²
áá«á¡áá»áá¯ááœá²áá²á·áá»ááºáá»ááºážá ááá¯ááºáááºá
Command ááŒá®ážááŒá±á¬ááºááŒááºážá
ááá±á¬áá°ááẠ- áááºážááŒááºáá° / IDE / terminal ááẠcommand áá¡áááºá¡ááœááºááá·áºá¡á¬ážáá±á¬ááºážááá¯ááá·áºá¡áá«á ááŸáá·áºáá áºáá«áá áºáá¶áá±á«áºááá¯ááŸá¯ááá·áºáááºáá»ááºáá»á¬ážáááºáá»áŸááºá¡áááºááŒá±áá«ááá¬ážá ááá¯á·ááŒá±á¬áá·áº python-shell ááẠá¡áá¬ážáá°áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠáá¶á·ááá¯ážáá±ážáááºá¡ááœáẠáááŒááºážááŒááºáž ááá¯ážáááºáá»ááºááŸááááºá á¡áá¯á¶ážá¡á±á¬ááºááŸá Shell á¡áááºážá ááœááºáááºáá»á¬ážááẠáááºážáá¡ááœááºáá»á¬áž (áá±áá¬á¡ááŸá¶á· __getattr__) ááá¯ááºáá±á¬ááŒá±á¬áá·áºá á¡ááá¯á¡áá»á±á¬ááºááŒáá·áºááœááºážááŒááºážááá¯áááºáž á¡á ááŸá¡áá¯á¶áž ááŒá¯áá¯ááºáá²á·ááẠ(__dir__ áááºážáááºážááᯠá¡áá®ážáá®áž) ááœááºáá²áá±ááŒááºážááŒáá·áº áááºáá®ážáá¬ážáá«áááºá á¡ááá¯á¡áá»á±á¬ááºááŒáá·áºá áœááºááŒááºážááẠBPython ááŸáá·áº IPython áááºáááºážáá»ááºáá»á¬ážááœáẠáááºááŸáááœáẠá¡áá¯ááºáá¯ááºáá«áááºá áá¯ááºáá«áááºá PyCharm ááá¯áá»áá¯áž ááá¯ááŒá®ážáá±ážá á¬ážááœááºáá±á¬ááºážáá²á· áá¯ááºáá¯ááºááœá±áá²á· áá±á«ááºážá ááºážáá¬ááᯠááŒááºáá»ááºáá«áááºá á¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºááŒá±ááœá±ááᯠáá®áŠážáááºáá»ááºááŸá¬ áá±á·áá¬áá±áá«áááºá
Properties áá»á¬ážááá·áºááŒááºážá
áá¯ááºáá±ááŸá¯á áá áºá áááºáá áºááá¯ááºážá¡áá±ááŒáá·áºá Shell á¡áááºážááẠáá±á¬ááºáá¯á¶áž_á¡áááá·áºáá±ážááŸá¯ ááá¯ááºááá¯ááºááŸá¯á¡áá áºááᯠáááŸááá²á·áááºá ShellException ááᯠáá¯áááá¯ááºáá±á¬ááŒááºáá¯ááºááŒáá·áº command ááŒáá·áºáá áºáá±á¬á¡áá«á Command object ááẠ__call__() command object ááá¯á·áá±á«áºááá¯ááŸá¯á០ááŒááºááá¬áá±á¬ááŒá±á¬áá·áº áááºážá¡ááœáẠááá¯á¡ááºáá¬áááºá ááá¯á€ááá¯á·áá¯ááºáá±á¬ááºáááºá¡ááœáá·áºá¡áá±ážáá áºáá¯ááŸááááº-
try:
command = Shell.touch('/foo.txt')
except ShellException:
command = Shell.last_command
Command object á áá¯ááºááá¹áááá»á¬ážá á¬áááºážááá¯áááºáž ááá¯ážáá»á²á·áá¬ážáá«áááºá Error stream ááá¯á· command output ááᯠááŒááºáá±ážááá·áº á¡ááŸá¬ážá¡ááœááºážá¡ááœááºáá áºáá¯ááᯠáá±á«ááºážááá·áºáá¬ážáááºá
áááŸááºáááºáá±á¬ Python á¡áááºáá»á¬ážááŒáá·áº ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááŒááºážá
á áá áºááá¯ááºážááá¯ááá¯ááœáẠPython ááœáẠidentifier á¡ááŒá Ạáááá·áºáá»á±á¬áºáá±á¬ á¡áááºáá¬á á¡áááºážáá¯á¶áž áááá¯ááááºáá áºáᯠááŸáááẠ(á¥ááá¬á áá¬áááºááŒá®áž 2to3 utility)á áá°áááá¯áá±á«áºáá«á
Shell.2to3()
á¡áááºáááŒá±ááẠá
áá¬ážááŒááºá ááœáá·áºáááŒá¯áá«áá°ážá
ááŒá±ááŸááºážáá»ááºááŸá¬ á¡ááá¯ááºážáá¯á¶á
á¶ááŒáá·áº command ááᯠáá±á«áºáááºááŒá
áºáááº
Shell("2to3") # вПзвÑаÑÐ°ÐµÑ ÐŸÐ±ÑÐµÐºÑ ÐºÐŸÐŒÐ°ÐœÐŽÑ
á áá¬ážááŒááºáááŸá¯áá±á¬áá·áºá០ááŸááºáááºáá±á¬ command áá»á¬ážááᯠááẠrun ááá¯ááºáááºá ááá¯áááºážá¡á¬ážááŒáá·áº ááá¯ááºáá»á±á¬áá®ááœá±ááŸááá±á¬ script áá»á¬ážáááºáá®ážááẠá¡ááœáá·áºá¡áááºážááᯠáá»ááºáá¬ážáá²á·áááºááŸá¬ áááááŒá¯ááá·áºáá«áááºá
cmd = "python{}".format(sys.version_info[0])
Shell(cmd)(*args, **kwargs)
á¡áá±ážá á¬ážááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž
- Command class object á __repr__() ááŸáá·áº __str__() áááºážáááºážáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·ááŒá®ážá ááá¯á¡áá« á¡ááá¯ááá¯ááááá¯ááºáá±á¬áááºááá¯ážáá»á¬áž (áá«áá¬áá®áá¬áá»á¬ážááŸáá·áº áááºážá stdout output á¡áá®ážáá®áž) ááᯠáá¯ááºáá¯ááºáá¬ážáá«áááºá
- áá¯ááºá¡áá±ážá á¬ážáá»á¬ážááᯠááŒá¯ááŒááºáá±ážáááºá
- á ááºážáááºááŸá¯ á¡áá»á¯á¶ážáááºááŸá¯ááᯠáá±á«ááºážááá·áºááŒááºážá ááŸáááŒá®ážáá¬ážá¡áá¬áá»á¬ážááᯠááŒááºáááºááœá²á·á ááºážááŒááºážá
- Subprocess ááŸáá·áº Process á¡áááºážáá»á¬ážááᯠáá±á«ááºážááá·áºááŒááºáž áááºááœááºáá»ááºááŸá¬ subprocess module ááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬á¡áá«ááœáẠabstraction á¡ááá·áºáá áºáᯠáááºáá®ážáááºááŒá áºáááºá Python 2/3 ááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬á¡áá« áá¯ááºááœá¬ážááŒááºážááᯠáááºááŸá¬ážááẠá¡áá»á¬ážá á¯ááŸá¬ ááá¯á¡ááºáá±á¬áºáááºáž á¡ááŒá¬ážáá±á¬ áá±á¬áááºá áºáá»á¬ážááá¯áááºáž áá±ážá áœááºážááá¯ááºáá«áááºá
smart-env ááœáẠáá¬á¡áá áºáá»á¬ážááŸááá±ážáá²á
python-shell ááŸáá·áº ááá°áá²á smart-env á á¬ááŒáá·áºááá¯ááºááœáẠááŒá±á¬ááºážáá²ááŸá¯ á¡áááºážáááºáᬠááŸááá²á·áááºá á€á¡áá¬á¡ááœáẠá¡ááŒá±á¬ááºážááŒáá»ááºááŸá¬ ááá¯ážááŸááºážááẠ- á¡á¬ážáááºáá»áááºáááŸáááŒááºážá á¡áá¬ážá¡áá¬ááŸááá±á¬ ááá¯ážáááºááŸá¯á¡áá»áá¯á· (á¥ááá¬á áááºáááºážáá»ááºááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºááŒáá·áºá áœááºááŒááºáž) ááᯠáá±á¬ááºááœááºááŸááááºááá¯á· ááœáŸá±á·ááœá¬ážááá·áºáá¬áá¡ááœááºáž á¡á¬ážáááºáá»áááºáááŸáááŒááºážá
ááááºáá±á¬á·á á á¬ááŒáá·áºááá¯ááºá¡ááœáẠá¡á±á¬ááºáá« á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠááŒá¯áá¯ááºáá¬ážáá«áááºá
- áá¯ááºá¡áá±ážá á¬ážáá»á¬ážááᯠááŒá¯ááŒááºáá±ážáááºá
- ááŒááºáááºááŒá¯ááŒááºááŒááºážá
- ááŸáááŒá®ážáá¬ážá ááºážáááºááŸá¯áá»á¬ážááᯠááŒááºáááºááœá²á·á ááºážááŒááºážááŸáá·áº ááŒá¯ááŒááºááŒááºážáá»á¬ážá
áá±á¬ááºááœááºááŸáááá·áº á¡á á®á¡á ááºáá»á¬áž
python-shell á á¬ááŒáá·áºááá¯ááº
- ááááºááá¯á·ááŒááºážááá¯ááºáá±á¬ á¡áááá·áºáá±ážáá±á«áºááá¯ááŸá¯áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯áá±á«ááºážááá·áºááŒááºáž (á¡ááŒáá¯ááºáá¯ááºáá±á¬ááºááŒááºáž)á
smart-env á á¬ááŒáá·áºááá¯ááº
- ENV á¡áááºážááœáẠáááºáááºážáá»áẠááááºážááŸááºáá»á¬áž á¡ááá¯á¡áá»á±á¬áẠááŒáá·áºááœááºážááŒááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážá
- env variable ááŸáááŒá±á¬ááºáž á á áºáá±ážááẠin operator á¡ááœáẠáá¶á·ááá¯ážááŸá¯á
- ENV á¡áááºážá¡ááœáẠstr() ááŸáá·áº repr() áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááœáẠá¡áá±á¬ááºá¡áá¶á·ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážá
áá±á¬ááºááœááºááŸáááá·áºáááºá áœá²áá»á¬ážááᯠá¡á±á¬ááºáá±á¬áºááŒáá« áááºááœááºáá±ážáááºážááŒá±á¬ááºážáá»á¬ážááœáẠáááºáá¶ááŒá±ááŒá¬áá«áááºá
Telegram áá»ááºááẠ(á¡áá»á¬ážááŒááºáá°) ááœá áºáᬠ- á€áá±á¬ááºážáá«ážááœáẠá¡ááºááááºáá¯ááºáá«á
source: www.habr.com