Conținut curs
Python Avansat
Despre lecție
  1. Introducere în biblioteca subprocess

    • Prezentarea bibliotecii subprocess
    • Scenarii de utilizare a subprocess
    • Diferența dintre biblioteca subprocess și alte metode de gestionare a proceselor externe
  2. Executarea unor comenzi simple cu subprocess

    • Utilizarea metodei run pentru a executa comenzi simple
    • Manipularea argumentelor și a opțiunilor comenzilor
    • Capturarea output-ului și erorilor
  3. Gestionarea proceselor externe în timp real

    • Utilizarea metodelor Popen și communicate pentru a interacționa cu procesele externe
    • Redirecționarea output-ului și a erorilor
    • Întreruperea și finalizarea proceselor externe
  4. Controlul avansat al proceselor externe

    • Setarea mediului de execuție și a căilor de căutare
    • Utilizarea unor shell-uri personalizate pentru executarea comenzilor
    • Așteptarea terminării proceselor și gestionarea timeout-urilor
  5. Comunicarea cu procesele externe

    • Utilizarea pipe-urilor pentru a trimite și a primi date de la procesele externe
    • Implementarea comunicării bidirecționale cu procesele externe
  6. Exemple și scenarii de utilizare în aplicații reale

    • Utilizarea subprocess pentru a lansa și a monitoriza aplicații externe
    • Implementarea unor script-uri de automatizare și testare

Exemple și exerciții pentru fiecare subpunct:

Exemplu: Executarea unei comenzi simple cu subprocess

python
import subprocess

result = subprocess.run(["ls", "-l"])
print(f"Return code: {result.returncode}")

Exercițiu:

Creați un script Python care să execute o comandă simplă și să afișeze codul de întoarcere al acesteia.

Exemplu: Capturarea output-ului și a erorilor cu subprocess

python
import subprocess

result = subprocess.run(["ls", "-l"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(f"Output:n{result.stdout.decode()}")
print(f"Errors:n{result.stderr.decode()}")

Exercițiu:

Creați un script Python care să execute o comandă și să captureze output-ul și erorile, afișându-le într-un format ușor de citit.

Exemplu: Gestionarea proceselor externe în timp real

python
import subprocess

process = subprocess.Popen(["ping", "-c", "4", "8.8.8.8"], stdout=subprocess.PIPE)

for line in process.stdout:
    print(line.decode().strip())

return_code = process.wait()
print(f"Return code: {return_code}")

Exercițiu:

Creați un script Python care să execute o comandă care generează output în timp real și să afișeze acest output pe măsură ce este generat.

Exemplu: Comunicarea bidirecțională cu procese externe

python
import subprocess

command = "bc"
process = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

input_data = "2+3n4*5nquitn"
process.stdin.write(input_data.encode())
process.stdin.flush()

output, errors = process.communicate()
print(f"Output:n{output.decode()}")
print(f"Errors:n{errors.decode()}")

Exercițiu:

Creați un script Python care să comunice bidirecțional cu un proces extern, trimițând date acestuia și citind rezultatele.

Rezumat:

În această lecție, am discutat despre lucrul cu biblioteca subprocess și gestionarea proceselor externe. Am învățat cum să executăm comenzi simple, să capturăm output-ul și erorile, și să gestionăm procesele externe în timp real. De asemenea, am explorat controlul avansat al proceselor externe și comunicarea bidirecțională cu acestea. În final, am prezentat exemple și scenariide utilizare în aplicații reale, inclusiv lansarea și monitorizarea aplicațiilor externe și implementarea unor script-uri de automatizare și testare.

Prin înțelegerea și aplicarea tehnicilor prezentate în această lecție, puteți crea aplicații Python mai puternice și flexibile, care să interacționeze eficient cu alte programe și sisteme de operare.