Dictionary durchiterieren?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

Das ist mal wieder für euch eine ziemlich blöde Frage, aber ich habe gerade echt einen Hänger.

Ich habe folgenden Code, und möchte die Ausgabe so, das ich nur die Inhalte von pid und Name angezeigt bekommen.

Code: Alles auswählen

import psutil
for proc in psutil.process_iter(attrs=['pid', 'name']):
    print(proc.info)
Bisher sieht die Ausgabe folgendermaßen aus:

Code: Alles auswählen

...
{'pid': 1500, 'name': 'svchost.exe'}
{'pid': 1508, 'name': 'svchost.exe'}
{'pid': 1520, 'name': 'svchost.exe'}
{'pid': 1668, 'name': 'svchost.exe'}
{'pid': 1704, 'name': 'svchost.exe'}
{'pid': 1732, 'name': 'svchost.exe'}
{'pid': 1744, 'name': 'svchost.exe'}
{'pid': 1792, 'name': 'WhatsApp.exe'}
{'pid': 1848, 'name': 'atiesrxx.exe'}
{'pid': 1868, 'name': 'svchost.exe'}
{'pid': 1944, 'name': 'svchost.exe'}
{'pid': 2032, 'name': 'igfxCUIService.exe'}
{'pid': 2076, 'name': 'RuntimeBroker.exe'}
{'pid': 2108, 'name': 'svchost.exe'}
{'pid': 2172, 'name': 'svchost.exe'}
{'pid': 2184, 'name': 'winwfpmonitor.exe'}
{'pid': 2192, 'name': 'svchost.exe'}
{'pid': 2232, 'name': 'svchost.exe'}
...
Vielleicht mögt ihr mir ja helfen.

Auf jeden Fall riesen Dank!
Benutzeravatar
__blackjack__
User
Beiträge: 13199
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Dirki: Du musst halt beide Werte ganz normal aus dem Wörterbuch holen. Wenn man ein Wörterbuch `d` hat, dann kann man da mit ``d[key]`` über einen Schlüssel auf den Wert zugreifen.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

EDIT:

Erstmal danke für Deine Mühe.



Ich bekomme das irgendwie gerade nicht im Kopf verdratet. Manchmal sind es echt die Kleinigkeiten, die einen Kopfweh bereiten.

folgendes habe ich versucht:

Code: Alles auswählen

import psutil
for proc in psutil.process_iter(attrs=['pid', 'name']):
    print(proc.info[pid])
NameError Traceback (most recent call last)
<ipython-input-12-4686ba43fd05> in <module>()
1 import psutil
2 for proc in psutil.process_iter(attrs=['pid', 'name']):
----> 3 print(proc.info[pid])

NameError: name 'pid' is not defined

Code: Alles auswählen

import psutil
for proc in psutil.process_iter(attrs=['pid', 'name']):
    procs=proc.info
    print (proc[pid])
    
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-13-392e801680b3> in <module>()
2 for proc in psutil.process_iter(attrs=['pid', 'name']):
3 procs=proc.info
----> 4 print (proc[pid])

NameError: name 'pid' is not defined



*hmpf*
Sirius3
User
Beiträge: 17793
Registriert: Sonntag 21. Oktober 2012, 17:20

Der Schlüssel ist ja auch ein String.
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

Ich brauche irgendwie eine Form, die ich hinterhet in ein QtableWidget einfügen kann.
Das einfügen von Zeilen und Spalten erfolgt ja schon durch iterieren, und das muss ich da irgendwie noch mit rein bekommen.

Daher habe ich noch ein bisschen was versucht:

Code: Alles auswählen

import psutil
procs = {p.pid: p.info for p in psutil.process_iter(attrs=['pid', 'name'])}
print(procs[0])
Das funktioniert in sofern, das ich mir eine Zeile ansehen kann ;)

Ausgabe:
{'pid': 0, 'name': 'System Idle Process'}

Edit:
Ich habe schon einen Teil angefangen am Code zu basteln:

Code: Alles auswählen

    def onButtonTaskrefreshTaskClick(self):
        row = self.ui.tableWidget.rowCount()
        self.ui.tableWidget.insertRow(row)
        #procs = {p.pid: p.info for p in psutil.process_iter(['pid', 'name'])}
        #print(procs)
        #self.ui.tableWidget.setItem(row, 0, QtWidgets.QTableWidgetItem("123"))
        #self.ui.tableWidget.setItem(row, 1, QtWidgets.QTableWidgetItem("Explorer.exe"))
        for proc in psutil.process_iter(attrs=['pid', 'name']):
            print(proc.info)
Die Kommentare waren erstmal nur dazu da, die Ausgabe in der Konsole zu testen. Irgendwie soll das ganze wenn es fertig ist in diese Funktion.
Antworten