Python Fire – Transformarea oricărui script Python într-un instrument de linie de comandă
- 1 minute de citit
- 3 exemple de cod
Disponibil și în English
A trecut ceva vreme de când am scris ultima postare și am de gând să fac și pe aceasta una scurtă.
Python Fire este o bibliotecă Python destul de tare, de la Google, care îți permite să transformi orice script Python într-un instrument de linie de comandă. Asta înseamnă că nu trebuie să scrii nicio logică pentru gestionarea parametrilor și opțiunilor din linia de comandă. Totuși, dacă scriptul tău are cazuri de utilizare mai sofisticate, probabil că vei fi mai bine servit de argparse din biblioteca standard.
Poți instala Python Fire din pip rulând aceste comenzi:
pip install ipython<br></br>pip install fireApoi, pentru a transforma scriptul într-un instrument de linie de comandă, tot ce trebuie să faci este să imporți fire și să apelezi metoda Fire, trecându-i o clasă. Fire analizează clasa și generează logica pentru gestionarea argumentelor din linia de comandă pentru fiecare metodă a clasei. De exemplu:
class LzwCommandLineAdapter: """ Aceasta va fi folosită cu Google Fire pentru o utilizare ușoară, ca să putem evita argparse/optparse. """ @staticmethod def encode(filename, out="encoded.txt"): """ Codifică textul din fișierul dat prin nume. """ pass @staticmethod def decode(filename, out="decoded.txt"): """ Decodifică textul din fișierul dat prin nume. """ pass if __name__ == "__main__": import fire fire.Fire(LzwCommandLineAdapter)Când rulăm scriptul, obținem următorul rezultat:
➜ Desktop python lzw.py Type: LzwCommandLineAdapter File: ~/Desktop/lzw.py Docstring: This will be used with Google Fire for easy usage, so we can avoid argparse/optparse. Usage: lzw.py lzw.py decode lzw.py encode ➜ Desktop python lzw.py decode Fire trace: Initial component Instantiated class "LzwCommandLineAdapter" (lzw.py:248) Accessed property "decode" (lzw.py:264) ('The function received no value for the required argument:', 'filename') Type: function String form: File: ~/Desktop/lzw.py Line: 264 Docstring: Decodes the text from the given filename. Usage: lzw.py decode FILENAME [OUT] lzw.py decode --filename FILENAME [--out OUT]Este o soluție destul de plăcută atunci când scrii o mulțime de scripturi Python ca să experimentezi cu diverse lucruri. Mulțumesc că ai citit!
Lectură suplimentară