¿Cómo usaría Python para determinar qué programas se están ejecutando actualmente? Estoy en Windows.Determinación de programas en ejecución en Python
Respuesta
import os
os.system('WMIC /OUTPUT:C:\ProcessList.txt PROCESS get Caption,Commandline,Processid')
f = open("C:\ProcessList.txt")
plist = f.readlines()
f.close()
Ahora PLIST contiene una lista formateada por espacios en blanco separado de los procesos:
- La primera columna es el nombre del ejecutable que ejecuta
- La segunda columna es el comando que representa el funcionamiento proceso
- la tercera columna es el ID de proceso
Esto debería ser fácil de p culo con python. Tenga en cuenta que la primera fila de datos son etiquetas para las columnas y no procesos reales.
¡Tenga en cuenta que este método solo funciona en Windows!
Gracias, WMIC funcionó bien. Desafortunadamente, el archivo de texto de salida no era tan fácil de analizar. Está en UTF-16 así que tuve que decodificarlo y recodificarlo como ASCII para analizar fácilmente usando if (processName en procList): return true – Murkantilism
¡Gracias a @ hb2pencil por el comando WMIC! He aquí cómo se puede canalizar la salida sin un archivo:
import subprocess
cmd = 'WMIC PROCESS get Caption,Commandline,Processid'
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in proc.stdout:
print line
información de tuberías de proceso de sub comandos no es ideal en comparación con una herramienta pitón real significado para conseguir procesos. Pruebe el módulo psutil. Para obtener una lista de números de proceso, hacer:
psutil.get_pid_list()
Me temo que usted tiene que descargar este módulo en línea, que no está incluido en las distribuciones de Python, pero esta es una mejor manera de resolver su problema. Para acceder al nombre del proceso para el que tiene número, haga:
psutil.Process(<number>).name
Esto debería ser lo que está buscando. Además, aquí es una manera de encontrar si un proceso específico se está ejecutando:
def process_exists(name):
i = psutil.get_pid_list()
for a in i:
try:
if str(psutil.Process(a).name) == name:
return True
except:
pass
return False
Este utiliza el nombre del archivo ejecutable, por lo que, por ejemplo, para encontrar una ventana de PowerShell, que podría hacer esto:
process_exists("powershell.exe")
get_pid_list() está en desuso, use pids() en su lugar – jake77
Hice algunas pruebas y para mí en win10, el psutil toma aproximadamente 10 veces más tiempo para realizar la misma tarea que las tuberías WMIC – user2145184
obtenía acceso denegado con get_pid_list(). Un método más nuevo funcionó para mí en Windows y OSX:
import psutil
for proc in psutil.process_iter():
try:
if proc.name() == u"chrome.exe":
print(proc)
print proc.cmdline()
except psutil.AccessDenied:
print "Permission error or access denied on process"
- 1. Ejecución de programas OpenGL en Linux
- 2. Ejecución de programas externos en Perl
- 3. Determinación de la URL redirigida en Python
- 4. distribuir programas escritos en Python
- 5. Depuración de programas de Python en emacs
- 6. comunicación entre programas python
- 7. Cómo ejecutar programas paralelos en python
- 8. Determinación de tiempos de ejecución del programa en la arquitectura Core i5/7
- 9. Distribuir programas Python
- 10. Determinación de la calidad JPG en Python (PIL)
- 11. lambda Python y la determinación del alcance
- 12. ¿Cómo ejecutar programas de Python en segundo plano?
- 13. ¿Cómo puedo distribuir programas de Python?
- 14. prueba de los programas de python interactivos
- 15. La determinación de la jerarquía de clases de un objeto en el tiempo de ejecución
- 16. Ejecutando programas Java a través de Python
- 17. Python: ¿cómo puedo llamar programas externos de Python?
- 18. set() tiempo de ejecución en python
- 19. cargar código python en tiempo de ejecución
- 20. la ejecución de comandos Bash en Python
- 21. ejecutar varios programas en Python, al mismo tiempo
- 22. orden de ejecución y el estilo de codificación en Python
- 23. Cómo ejecutar programas en python2 y python3
- 24. Usando python para ejecutar otros programas
- 25. Formas en programas C++
- 26. Determinación del tipo de expresión
- 27. Eclipse: ejecución de programas que no están en la consola de eclipse nativo
- 28. modificar un programa python en ejecución
- 29. Comunicación con un demonio python en ejecución
- 30. Python REPL para un proceso en ejecución
¡Hola! Bienvenido a StackOverflow! Sería muy útil si publicaras cosas que has intentado pero que no han funcionado para ti. Esto permite que las personas que responden preguntas sepan con qué están teniendo problemas. Buena suerte con tu pregunta! –