Zavolat z Python'u nějaký externí program mohou být v podstatě přinejmenším dvě rozílné věci:
Zatímco v prvním případě používáte Python jenom jako jakousi „přerostlou“ příkazovou řádku a stačí se tak tudíž pouze naučit, jak na to (pomineme-li rozdíly ve vstupních parametrech jednotlivých programů), ve druhém případě vás zjevně čeká zkoumání pythoního API příslušného externího programu.
Pro případ programů, které jinak nemají s Python'em nic společného, se zjevně z hlavního řídicího pythoního skriptu stává jen víceméně bezduchý volač externích procesů. Máte v podstatě dvě základní možnosti:
PS: Nikdo ovšem neříká, že přesně stejným způsobem nemůžete spouštět jiné pythoní programy. Pokud hlavní pythoní program bude fungovat jenom jako „přerostlý bash“ nebo tak něco, je to ostatně celkem přirozená (a zdaleka nejjednodušší) volba.
V mnoha případech lepší tedy je, pokud pro uvedený externí program existuje tzv. binding do Python'u. Pak totiž stačí uvedenou propojovací knihovnu do Python'u doinstalovat a s programem pak můžete komunikovat čistě přes Python a jakékoliv příkazové řádce se zdaleka vyhnete. Jediným problém tak dnes často je pouze to, zda uvedená knihovna už existuje i pro Python 3.x nebo zatím stále pouze pro dvojkovou řadu.
Namátkou pár příkladů:
Samozřejmě jak už jsem říkal – co program, to vlastní API. A čím složitější program, tím složitější API. V některých případech vás bude objemem čekat téměř samostatný „podjazyk“.
Jednou ze základních technik, díky kterým funguje druhá možnost (tedy použití pythoního API), je tzv. Foreign Function Interface (FFI) – možnost volat (relativně komfortně) funkce ve sdílených knihovnách vyrobených úplně jinými jazyky. V Python'u ji má na starosti převážně knihovna ctypes
.
Jelikož uvedená technika se často používá také pro přepis časově kritických částí kódu do rychlejšího jazyka, je jí věnováno několik samostatných kapitol (pro základní přehled viz úvod).