Mucha gente usa Python como reemplazo de los scripts de shell, usándolo para automatizar tareas comunes del sistema, como manipular archivos, configurar sistemas, etc. Este artículo tiene como objetivo describir la aceptación de la entrada de secuencias de comandos a través de la redirección, canalizaciones o archivos de entrada.
Problema: tener un script para poder aceptar entradas usando cualquier mecanismo que sea más fácil para el usuario. Esto debe incluir canalizar la salida de un comando al script, redirigir un archivo al script o simplemente pasar un nombre de archivo, o una lista de nombres de archivo, al script en la línea de comandos.
El módulo de entrada de archivos incorporado de Python hace que esto sea muy simple y conciso si el script se ve así.
Código #1:
import fileinput with fileinput.input() as f_input: for line in f_input: print(line, end ='')
Luego, la entrada al script ya se puede aceptar en todas las formas mencionadas anteriormente. Si el script se guarda y lo hace ejecutable, puede obtener el resultado esperado usando todo lo siguiente:
Código #2:
# Prints a directory listing to stdout. $ ls | ./filein.py # Reads/etc/passwd to stdout. $ ./filein.py/etc/passwd # Reads/etc/passwd to stdout. $ ./filein.py < /etc/passwd
La función fileinput.input() crea y devuelve una instancia de la clase FileInput . Además de contener algunos métodos útiles de ayuda, la instancia también se puede usar como administrador de contexto. Entonces, para poner todo esto junto, si uno escribió una secuencia de comandos que esperaba imprimir la salida de varios archivos a la vez, podría incluir el nombre del archivo y el número de línea en la salida, como se muestra en el código que se muestra a continuación:
Código #3:
import fileinput with fileinput.input('/etc/passwd') as f: for line in f: print(f.filename(), f.lineno(), line, end ='')
/etc/passwd1 /etc/passwd2 /etc/passwd3 <other output omitted>
Usarlo como administrador de contexto garantiza que el archivo se cierre cuando ya no se usa, y uno aprovechó algunos métodos útiles de ayuda de FileInput aquí para obtener información adicional en la salida.
Publicación traducida automáticamente
Artículo escrito por manikachandna97 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA