目次
1. Ano ang pag-execute ng command sa Python?
Ang Python ay isang programming language na ginagamit para i-automate ang iba’t ibang gawain, ngunit ang malaking atraksyon nito ay ang kakayahang magpatakbo ng mga operasyon sa command line mula sa programa. Sa Python, maaari mong tawagin ang mga function ng OS upang i-automate ang paghawak ng mga file at pamamahala ng sistema. Sa artikulong ito, ipapakita namin ang mga pangunahing paraan hanggang sa mga advanced na paggamit ng Python para magpatakbo ng mga command.2. Pangunahing paraan ng pag-execute ng command gamit ang Python
Ang pinaka-pangunahing paraan ng pag-execute ng command sa Python ay ang paggamit ngos.system()
o subprocess
module. May mga kalamangan at kahinaan ang bawat paraan, kaya mahalagang piliin ang naaangkop depende sa sitwasyon.2.1 Pag-execute ng command gamit ang <codeos.system()
os.system()
ay isang simpleng paraan para magpatakbo ng system command mula sa Python program. Gamitin ito tulad ng sumusunod.import os
os.system('ls')
Bagaman madaling gamitin ang method na ito, hindi nito makukuha ang resulta ng command at may mga alalahanin sa seguridad, kaya karaniwang hindi ito inirerekomenda. Sa kasalukuyan, mas madalas na ginagamit ang subprocess
module na mas madaling kontrolin.2.2 Pangunahing pag-execute ng command gamit ang subprocess.run()
Ang subprocess.run()
ay inirerekomendang paraan para sa pag-execute ng command sa Python. Maaari nitong kunin ang resulta at mag-handle ng error, kaya mas ligtas at flexible ang pagpatakbo ng mga command.import subprocess
subprocess.run(['ls', '-l'])
Sa code na ito, pinapatakbo ang ls -l
command at ipinapakita ang resulta sa standard output. Ang subprocess.run()
ay gumagana nang synchronous, kaya hindi magpapatuloy sa susunod na proseso hangga’t hindi natatapos ang command. Kapaki-pakinabang ito lalo na sa file operations at system administration.
3. Advanced na Pagpapatupad ng Command: Asynchronous na Pagproseso at Pipe Processing
Kung kailangan ng mas advanced na pagpapatupad ng command, sa pamamagitan ng paggamit ngsubprocess
module, posible ang asynchronous execution at pipe processing. Dahil dito, mas kumplikadong mga proseso ay maaaring i-automate nang mas epektibo.3.1 Asynchronous na Pagpapatupad ng Command gamit ang subprocess.Popen()
Ang asynchronous processing ay nagbibigay-daan na magpatuloy sa susunod na hakbang nang hindi naghihintay na matapos ang command, kaya ito ay kapaki-pakinabang kapag nais mong magsagawa ng maraming gawain nang sabay-sabay. Halimbawa, ang sumusunod na code ay nagpapatupad ng command nang asynchronous.import subprocess
proc = subprocess.Popen(['sleep', '5'])
print("コマンドは実行中です")
Ang code na ito ay nagpapatupad ng sleep 5
command nang asynchronous at nagpapakita ng “Ang command ay tumatakbo”. Ang asynchronous processing ay epektibo kapag may mga command na matagal o mga gawain na nais patakbuhin nang sabay.3.2 Pagsasama ng Maramihang Command sa Pamamagitan ng Pipe Processing
Kapag nais mong pagsamahin at patakbuhin ang maraming command, kapaki-pakinabang ang pipe processing. Halimbawa, kung babasahin mo ang nilalaman ng isang file at isusulat ito sa ibang file, maaari mong gawin ito tulad ng sumusunod.import subprocess
with open('input.txt') as input_file, open('output.txt', 'w') as output_file:
subprocess.run(['cat'], stdin=input_file, stdout=output_file)
Sa code na ito, binabasa ang nilalaman ng input.txt
gamit ang cat
command at isinusulat ito sa output.txt
. Isa sa mga makapangyarihang tampok ng subprocess.run()
ay ang kakayahang ikonekta ang standard input at standard output gamit ang pipe.4. Paghawak ng Error at Pagkuha ng Output
Ang mahalagang aspeto sa pagpapatakbo ng command ay ang paghawak ng error at pagkuha ng resulta ng command.subprocess
ay dinisenyo upang maproseso ang mga ito nang flexible.4.1 Pagkuha ng Standard Output at Error Output
subprocess.run()
sa, maaaring i-capture ang standard output at error output ng command. Sa halimbawang ito, iniimbak ang resulta ng command sa isang variable at ipinapakita ang nilalaman nito.import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)
Dito, sa pamamagitan ng pagtukoy ng capture_output=True
, kinukuha ang standard output ng command. Ang error output ay maaaring makuha gamit ang result.stderr
.4.2 Paghawak ng Error gamit ang Exception Handling
Kapag nagkaroon ng error habang pinapatakbo ang command, magtataas ang Python ng exception. Sa pamamagitan ng pagproseso nito gamit angtry-except
block, maaaring magbigay ng angkop na tugon kapag naganap ang error.import subprocess
try:
subprocess.run(['invalid_command'], check=True)
except subprocess.CalledProcessError as e:
print(f"Nagkaroon ng error: {e}")
Sa code na ito, sa pamamagitan ng pagtukoy ng check=True
, magtataas ng exception kapag nabigo ang command at mahuhuli ang mensahe ng error. Sa ganitong paraan, maaaring magtala ng log kapag may error o magsagawa ng ibang proseso.
5. Pagkakaiba ng Windows, Mac, Linux
Ang pagpapatupad ng mga utos sa Python ay maaaring mag-iba depende sa OS na ginagamit. Lalo na, may pagkakaiba sa format at pag-uugali ng mga utos sa pagitan ng Windows at mga Unix-like na OS (Linux at macOS), kaya kailangan mag-ingat.5.1 Pagpapatupad ng Utos sa Windows
Sa kapaligiran ng Windows, ginagamit ang Command Prompt o PowerShell upang magpatakbo ng mga utos. Halimbawa, upang ipakita ang listahan ng mga direktoryo, isusulat ito tulad ng sumusunod.import subprocess
subprocess.run(['dir'], shell=True)
Sa Windows, kinakailangang tukuyin ang shell=True
, na nagpapahintulot na patakbuhin ang mga internal na utos ng shell.5.2 Pagpapatupad ng Utos sa Unix-like na OS
Sa Linux at macOS, maaaring direktang patakbuhin ang mga shell command. Halimbawa, upang kunin ang listahan ng mga direktoryo, isusulat ito tulad ng sumusunod.import subprocess
subprocess.run(['ls', '-l'])
Sa mga Unix-like na OS, iba ang format ng mga utos kumpara sa Windows, at madalas ay mas simple itong maisulat.6. Buod
Sa pamamagitan ng paggamit ng Python upang magsagawa ng mga utos, maaari mong i-automate ang pamamahala ng mga file at mga operasyon ng sistema, at mapabuti ang kahusayan.subprocess
na module, maaari kang sumaklaw sa iba’t ibang senaryo mula sa pangunahing pag-execute ng mga utos hanggang sa asynchronous na pagproseso at pipe processing. Gayundin, mag-ingat sa error handling at mga pagkakaiba-iba ng OS, at gamitin ang Python upang makamit ang flexible na pag-execute ng mga utos. Sa ganitong paraan, sa pamamagitan ng maayos na pag-unawa sa mga paraan ng pag-execute ng mga utos gamit ang Python at pagpapabuti ng kahusayan ng pang-araw-araw na gawain, maaari mong higit pang paunlarin ang iyong kasanayan sa programming. Subukan mo itong ilapat.