1 | ||
Editor: pycz
Time: 2007/03/21 10:38:48 GMT+0 |
||
Note: opravy |
changed: - V Pythonu existuje několik způsobů, jak spustit externí program (exe, com, bat, ...) nebo otevřít soubor, který je asociovaný s nějakou aplikací. Spouštění jiného pythonovského skriptu ======================================= Příklad:: execfile('mujscript.py') # nebo i import mujscript Spouštění programů ===================== Na toto má Python několik funkcí, záleží na tom, co vám stačí, co přesně chcete. Existuje mnoho podvariant následujících příkazů, hledejte v manuálu. Od Pythonu 2.5 je nejlepší využívat služeb modulu *subprocess*. Spuštění programů v novém procesu ----------------------------------- Příklad:: import subprocess proces=subprocess.Popen([r"c:\Program Files\Mozilla Firefox\firefox.exe", "http://www.py.cz"]) # proces.wait() # pred pokracovanim, muze pockat na dokonceni noveho procesu print "hotovo" Spouštění příkazů ================== Příklad:: import subprocess proces=subprocess.Popen('dir', stdout=subprocess.PIPE, shell=True) print proces.stdout.read() print "hotovo" Poznámka pro Windows: Spouštíte-li příkazy, jejichže se seznam se dá získat pomocí *help* na příkazové řádce, je třeba vždy použít *shell=True*. V ostatních případech nikoliv. Windows only ============== Spouštění asociovaných aplikací --------------------------------- os.startfile(cesta) ...................... Příklad:: os.startfile('mujPraveVygenerovanyDokument.html') # spuštění prohlížeče s dokumentem os.startfile('mailto:uzivatel@nejaka.adresa.cz') # spuštění poštovního programu os.startfile('c:/WINNT/odbc.ini') # spustí editor nad souborem odbc.ini Jde o ekvivalent příkazu 'start' prováděného na příkazovém řádku windowsovské konzoly. win32api ----------- Pokud svůj program vytváříme v grafickém prostředí, výše uvedené příkazy vytváří rušící dosovské okno, ve kterém se příkaz vykonává. Na toto existuje modul PyWin32, který tyto nectnosti odstraňuje. Na druhou stranu ovšem váš program přestává být multiplatformní, ale i to se dá ošetřit, různými if... win32api.!WinExec(cesta, argumenty) ..................................... !WinExec je podobný os.system(), ale pod windows překonává jeho omezení, včetně mnoha možných argumentů. win32api.!ShellExecute() ............................ Typicky otevírá různé dokumenty, tedy asociované aplikace.
V Pythonu existuje několik způsobů, jak spustit externí program (exe, com, bat, ...) nebo otevřít soubor, který je asociovaný s nějakou aplikací.
Příklad:
execfile('mujscript.py') # nebo i import mujscript
Na toto má Python několik funkcí, záleží na tom, co vám stačí, co přesně chcete. Existuje mnoho podvariant následujících příkazů, hledejte v manuálu. Od Pythonu 2.5 je nejlepší využívat služeb modulu subprocess.
Příklad:
import subprocess proces=subprocess.Popen([r"c:\Program Files\Mozilla Firefox\firefox.exe", "http://www.py.cz"]) # proces.wait() # pred pokracovanim, muze pockat na dokonceni noveho procesu print "hotovo"
Příklad:
import subprocess proces=subprocess.Popen('dir', stdout=subprocess.PIPE, shell=True) print proces.stdout.read() print "hotovo"
Poznámka pro Windows: Spouštíte-li příkazy, jejichže se seznam se dá získat pomocí help na příkazové řádce, je třeba vždy použít shell=True. V ostatních případech nikoliv.
Příklad:
os.startfile('mujPraveVygenerovanyDokument.html') # spuštění prohlížeče s dokumentem os.startfile('mailto:uzivatel@nejaka.adresa.cz') # spuštění poštovního programu os.startfile('c:/WINNT/odbc.ini') # spustí editor nad souborem odbc.ini
Jde o ekvivalent příkazu 'start' prováděného na příkazovém řádku windowsovské konzoly.
Pokud svůj program vytváříme v grafickém prostředí, výše uvedené příkazy vytváří rušící dosovské okno, ve kterém se příkaz vykonává.
Na toto existuje modul PyWin32, který tyto nectnosti odstraňuje. Na druhou stranu ovšem váš program přestává být multiplatformní, ale i to se dá ošetřit, různými if...
WinExec je podobný os.system(), ale pod windows překonává jeho omezení, včetně mnoha možných argumentů.
Typicky otevírá různé dokumenty, tedy asociované aplikace.