Programování v Pythonu

Podobné dokumenty
Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Programování v Pythonu

Python Základní operace Vestavěné funkce a standardní moduly Pythonu

Programování v Pythonu

Programování v Pythonu

Motivace. Vstup a výstup. Minimální komunikace. Motivace. ÚDPJ - Vstup a výstup. Ing. Lumír Návrat katedra informatiky, A

Programování v Pythonu

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Implementace systémů HIPS: historie a současnost. Martin Dráb

Programování v Pythonu

Práce se soubory. Úvod do programování 2 Tomáš Kühr

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

PSK3-5. Přesměrování vstupu a výstupu. Vstup a výstup

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v Pythonu

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

LINUX přesměrování a roury

Django Urls, views, templates

Programování v jazyce JavaScript

C2110 Operační systém UNIX a základy programování

Unix je víceuživatelský a víceúlohový OS

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

Django. Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu

Objektově orientované programování v jazyce Python

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Programování v jazyce JavaScript

DUM 06 téma: Tvorba makra pomocí VBA

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

Programování v Pythonu

Základní příkazy OS UNIX

ANOTACE vytvořených/inovovaných materiálů

Sada 1 - PHP. 03. Proměnné, konstanty

Algoritmizace a programování

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

FILTRY V GNU/LINUXU ZLÍNSKÝ KRAJ. Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště

Soubor jako posloupnost bytů

Textové soubory. alg9 1

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Regulární výrazy. Vzory

Vizuální programovací jazyk

Výjimky a ošetřování chyb v PHP. Who is General Failure and why is he reading my disk?!

Vícerozměrná pole. Inicializace pole

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Objektově orientované programování v jazyce Python

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Základní příkazy pro práci se soubory

Algoritmizace a programování

LINUX ADRESÁŘOVÁ STRUKTURA. Co to, hrome, je? V této lekci se budeme brouzdat adresáři. SPŠ Teplice - 3.V

Úvod do Operačních Systémů

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

MS Excel makra a VBA

Výčtový typ strana 67

OS řady Microsoft Windows

ALGORITMIZACE A PROGRAMOVÁNÍ

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

Programujeme v softwaru Statistica

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Operační systémy 2: Zápočtové úkoly

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Windows a real-time. Windows Embedded

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Úvod do programovacích jazyků (Java)

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Excel tabulkový procesor

PSK3-9. Základy skriptování. Hlavička

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Jazyk C++, některá rozšíření oproti C

1. Od Scheme k Lispu

8 Třídy, objekty, metody, předávání argumentů metod

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Funkcionální programování. Kristýna Kaslová

programátorský manuál

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

Programy v prostředí operačního systému

17. července :51 z moravec@yahoo.com

6. blok část B Vnořené dotazy

Úvod do programování. Lekce 1

Tematický celek Práce ze soubory. 5.2 Objektový model FSO. - slouží pro ukládání záznamů, - každý ze záznamů obsahu jedno nebo více polí.

IB111 Úvod do programování skrze Python Přednáška 7

ODKAZY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika

Transkript:

ƒeské vysoké u ení technické v Praze FIT Programování v Pythonu Ji í Znamená ek P íprava studijního programu Informatika je podporována projektem nancovaným z Evropského sociálního fondu a rozpo tu hlavního m sta Prahy. Praha & EU: Investujeme do va²í budoucnosti

Python (2011-04-07) : Obsluha externích procesů 1 of 6 Python Obsluha externích procesů Úvod Podobně jako u argumentů skriptu, kde sys.argv poskytovalo přístup na té nejnižší úrovni a celá armáda postupně vznikajících modulů nabízela čím dál tím větší komfort, spouštění externích programů a zpracování jejich výstupu se dá také rozdělit na podobné dvě části: os.system() nejbrutálnější, platformně závislý způsob spouštění cizích programů subprocess vyvrcholení snahy o jednotný přístup a obsluhu externích procesů Jelikož (nejen) pro spouštění externích procesů je potřebná znalost aktuální pozice v rámci souborového systému, podíváme se v této kapitole krátce i na ni. os.system() Tento příkaz má následující syntaxi os.system(příkaz), kde PŘÍKAZ je řetězec obsahující kód pro příkazovou řádku, který chceme zavolat. Následuje několik komentovaných ukázek typického použití: I. Nejzákladnější použití představuje vyvolání nějakého systémového programu, např. ls pod UNIXy. Při dané adreářové struktuře dostaneme: Vstup ls.test.in :. -- ls.test.py -- something `-- example.py -- something_else `-- test `-- test.txt

Python (2011-04-07) : Obsluha externích procesů 2 of 6 Program ls.test.py : import os os.system("ls") Výstup: ls.test.py something something_else test II. Ve své přímočarosti os.system() kašle na jakékoli změny v prostředí (např. sys.stdout a další). Musíme se k němu opravdu chovat, jako kdybychom příslušný program spouštěli přímo na příkazové řádce: os.system( "ls >listing.txt" ) Praktičtější příklad z praxe: os.system( "saxon -o example.html example.xml example.xslt" ) Základní operace s cestou Spouštění globálně dostupných programů je možné pouze podle jejich jména, pro neglobální však už nikoli. Podobně vyrobí-li volaný program nějaký výstup, resp. musíme-li mu nějaký vstup ze souborového systému naopak poslat, je znalost, jak se k uvedenému souboru dostat, nezbytná. Následuje výběr nejdůležitějších operací pro práci se souborovým systémem: I. Operace zjištění a změny aktuální cesty: os.getcwd() vrátí řetězec reprezentující absolutní cestu k aktuálnímu adresáři os.chdir(cesta) změní aktuální pracovní adresář na umístění CESTA; to může být zadané jak relativně, tak absolutně II. Cesty je důležité získávat a zadávat ve tvaru, který bude fungovat na různých platformách. Pro to je k dispozici mnoho metod v modulu os.path, z nichž mezi nejdůležitější patří: os.path.normpath(cesta) vrátí cestu v normalizovaném tvaru vhodném pro zadávání do jiných metod; na Windows to ještě nemusí stačit a může být

Python (2011-04-07) : Obsluha externích procesů 3 of 6 třeba použít os.path.normcase(cesta) (týká se zvláště velikosti písmene svazku např. při porovnávání cest) os.path.abspath(cesta) jako předchozí, ale vrací absolutní cestu os.path.join( path1[, path2[,...]]) ) vyrobí výslednou cestu z uvedených částí (narozdíl od ručního lepení řetězců správně pro každou platformu) os.path.split(cesta) podle možností rozdělí cestu na head a tail, přičemž tail nikdy neobsahuje / (typicky bude tail soubor a head cesta k němu); viz též os.splitext(path) os.path.exists(cesta) vrací True, existuje-li (nebo je přístupná) daná cesta os.path.isabs(path), os.path.isfile(), os.path.isdir(path), os.path.islink(path), os.path.ismount(path) vrací True, je-li uvedená cesta absolutní, resp. soubor, resp. adresář, resp. symbolický odkaz (symlink), resp. mount point III. Adresáře a soubory je přitom samozřejmě možné i vypisovat, vyrábět, mazat apod.: os.listdir(cesta) vrátí seznam jmen souborů (tj. i adresářů) na uvedené cestě os.mkdir(cesta[, mode]), os.makedirs(cesta[, mode]) vyrobí adresář (v uvedeném módu, je-li aplikovatelný) na uvedené cestě; druhá varianta doplní i případné neexistující nadřazené adresáře os.remove(cesta_k_souboru), os.rmdir(cesta_k_adresáři), os.removedirs(cesta_k_adresáři) pokusí se na uvedené cestě odstranit soubor, resp. adresář, resp. adresář včetně nadřazených; pro specifičtější práci viz též shutils.rmtree() os.rename(src, dst), os.renames(old, new) pokusí se přejmenovat uvedenou na cestu na novou Pro práci s dočasnými cestami je k dispozici celý vlastní modul tempfile. subprocess I Modul subprocess je dnes preferovaný (a podstatně bezpečnější) způsob práce s externími programy. Definuje jednu základní třídu.. subprocess.popen(args, bufsize=0, executable=none, stdin=none, stdout=none, stderr=none, preexec_fn=none, close_fds=false, shell=false, cwd=none, env=none, universal_newlines=false, startupinfo=none, creationflags=0)

Python (2011-04-07) : Obsluha externích procesů 4 of 6..plus několik užitečných konstant (subprocess.pipe, subprocess.stdout) a přehršel pomocných funkcí. I. Nejjednodušší způsob použití představuje přímé zavolání externího programu bez jakýchkoli parametrů.. # zavolej příkaz 'ls' subprocess.popen("ls")..případně s parametry: # zavolej příkaz 'ls -al' args = ['ls', '-al'] subprocess.popen(args) II. Jelikož výstupy předchozích programů jdou ve výchozím nastavení přímo na standardní výstup, nejsou jednoduše dále použitelné v rámci našeho programu. Můžeme si je ale snadno přesměrovat, například do souboru: with open('process.b.out1', 'w') as f: p = subprocess.popen("ls", stdout=f) args = ['ls', '-al'] with open('process.b.out2', 'w') as f: p = subprocess.popen(args, stdout=f) subprocess II Volání externích procesů je ale ještě flexibilnější. S výhodou můžeme použít zvláště následující: Parametry stdin, stdout a stderr, které slouží k přesměrování vstupu, výstupu a chybového výstupu volaného procesu. Parametr cwd slouží ke změně adresáře, v němž dojde k zavolání externího procesu.

Python (2011-04-07) : Obsluha externích procesů 5 of 6 Parametr env slouží k modifikaci proměnných prostředí pro potřeby spouštěného externího procesu. Obsluhu standardního proudu subprocess.pipe zajišťuje metoda communicate([input=none]). Jejím úkolem je posílat data do stdin (v tom případě vyžaduje nastavení stdin=subprocess.pipe) a číst je ze stdout a stderr (čeká přitom na ukončení volaného procesu). Několik příkladů: I. Vyvolání externího programu se vstupem ze standardního proudu a výstupem do souboru: Program process.1.py : outfile = open("process.1.out", "w", encoding="ascii") p = subprocess.popen("sort", stdin=subprocess.pipe, stdout=outfil p.communicate( b"hello\nhow\nare\nyou" ) outfile.close() Výstup: are hello how you II. Složitější varianta předchozího standardní i chybový výstup přesměrovány také na standardní proud: Program process.2.py :

Python (2011-04-07) : Obsluha externích procesů 6 of 6 p = subprocess.popen("sort", stdin=subprocess.pipe, stdout=subprocess.pipe, stderr=subprocess.stdout) print( "handle:", p ) output, error = p.communicate( b"hello\nhow\nare\nyou" ) print( "output:", output ) print( "error:", error ) Výstup: handle: <subprocess.popen object at 0x00C06030> output: b'are\nhello\nhow\nyou\n' error: None