2010-09-16 25 views
45

Lo leí en algún lugar hace un tiempo, pero parece que no puede encontrarlo. Estoy tratando de encontrar un comando que ejecutará comandos en el terminal y luego dará salida al resultado.comandos de ejecución de Python Script en la Terminal

Por ejemplo: la secuencia de comandos será:

command 'ls -l' 

Será el resultado de ejecutar dicho comando en el terminal de

Respuesta

89

Hay varias maneras de hacer esto:

Una forma sencilla es utilizar el módulo os:

import os 
os.system("ls -l") 

Más cosas complejas se pueden lograr con el módulo de subproceso: de ejemplo:

import subprocess 
test = subprocess.Popen(["ping","-W","2","-c", "1", "192.168.1.70"], stdout=subprocess.PIPE) 
output = test.communicate()[0] 
+16

No quiero declinarte pero. Deberías usar un subproceso para todo. Es mucho más seguro. subprocess.call() obtendrá una interfaz agradable para reemplazar el formulario de llamada simple. –

+0

Gracias por esa respuesta amigo. Usaré Python para mi primera aplicación en el escritorio de Ubuntu, esto realmente me ayudará. – LinuxBill

+0

¿Cómo puedo obtener la respuesta completa de un comando, 'os.system ("nslookup gmail.com")' devuelve únicamente la última línea '0', pero quiero obtener la respuesta completa. –

1

Debes también mirar en commands.getstatusoutput

Esto devuelve una tupla de longitud 2 .. El primero es el número entero de retorno (0 - cuando los comandos es exitosa) segundo es toda la salida como se muestra en el terminal.

Para ls

import commands 
    s=commands.getstatusoutput('ls') 
    print s 
    >> (0, 'file_1\nfile_2\nfile_3') 
    s[1].split("\n") 
    >> ['file_1', 'file_2', 'file_3'] 
-5

En la GUI de escritorio, (algunos de ustedes no puede haber usarlo) puede Leafpad de un acceso directo y tiene un comando en él para abrir el archivo deignated. Si lo copias y lo pegas en tu intérprete de Python, debería funcionar. (No entierro estoy seguro de que esto funcionará, pero ¿por qué no probarlo?) Disculpa por todos los errores de ortografía ... Solo soy 11. ¡Esta información NO está hecha! ¡eso es solo que yo soy flojo mientras invento un nombre! recuerda, ¡solo tengo 11!

+0

lol whattttttttt – mikebertiean

+0

lmfao qué es esto – Gianlucca

8

que prefieren el uso del módulo de subproceso:

from subprocess import call 
call(["ls", "-l"]) 

La razón es que si desea pasar alguna variable en el script esto da forma muy fácil, por ejemplo, tomar la siguiente parte del código

abc = a.c 
call(["vim", abc]) 
0
import os 
os.system("echo 'hello world'") 

Esto debería funcionar. No sé cómo imprimir el resultado en el Shell Python.

Cuestiones relacionadas