π ΠΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Python: ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΠΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Python?
Π Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ subprocess
. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import subprocess
# ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ
output = subprocess.check_output(["command"], shell=True)
print(output.decode("utf-8"))
# ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°
return_code = subprocess.call(["command"], shell=True)
print(return_code)
ΠΠ΄Π΅ΡΡ "command"
Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° Π½ΡΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠΎΠ΄ΡΠ»Ρ subprocess
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅, ΠΈ Π±ΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΌΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Python
ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Python ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ Π½Π°Π²ΡΠΊΠΎΠΌ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Python Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ os
ΠΠΎΠ΄ΡΠ»Ρ os
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Π² Python, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ Π² Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ os
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ os.system()
.
import os
# ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 'ls' Π² Linux ΠΈΠ»ΠΈ 'dir' Π² Windows
os.system('ls')
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ls
Π² Linux ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ dir
Π² Windows ΠΈ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ Python.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ subprocess
ΠΠΎΠ΄ΡΠ»Ρ subprocess
ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Π² Python, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈΠ· Python-ΡΠΊΡΠΈΠΏΡΠ°. ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π² Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ subprocess
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ subprocess.run()
ΠΈΠ»ΠΈ subprocess.call()
.
import subprocess
# ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 'ls' Π² Linux ΠΈΠ»ΠΈ 'dir' Π² Windows
subprocess.run(['ls'])
subprocess.call('dir', shell=True)
ΠΠ±Π΅ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ls
Π² Linux ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ dir
Π² Windows ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ sh
ΠΠΎΠ΄ΡΠ»Ρ sh
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈΠ· Python-ΡΠΊΡΠΈΠΏΡΠ°. ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ sh
, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pip
ΠΏΠ΅ΡΠ΅Π΄ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
from sh import ifconfig
# ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 'ifconfig' Π² Linux
output = ifconfig()
print(output)
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ifconfig
Π² Linux ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ output
.
4. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ plumbum
ΠΠΎΠ΄ΡΠ»Ρ plumbum
ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ Π² Python. ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ plumbum
, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pip
ΠΏΠ΅ΡΠ΅Π΄ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
from plumbum import local
# ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 'ls' Π² Linux ΠΈΠ»ΠΈ 'dir' Π² Windows
output = local['ls']()
print(output)
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ls
Π² Linux ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ output
.
5. Π Π°Π±ΠΎΡΠ° Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΈ ΠΈΡ
Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ subprocess
ΠΈΠ»ΠΈ plumbum
.
import subprocess
# ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 'ls -l' Π² Linux ΠΈΠ»ΠΈ 'dir /w' Π² Windows
subprocess.run(['ls', '-l'])
subprocess.call('dir /w', shell=True)
Π ΡΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΠΊΠΎΠΌΠ°Π½Π΄Π° ls -l
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² Linux, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° dir /w
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² Windows.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ Π² Python ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΌΠΎΡΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π²Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ Π² Python, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ os
, subprocess
, sh
ΠΈ plumbum
. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ Π·Π½Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ.