Seite 1 von 1

Dictionary durchiterieren?

Verfasst: Donnerstag 20. Februar 2020, 13:01
von Dirki
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!

Re: Dictionary durchiterieren?

Verfasst: Donnerstag 20. Februar 2020, 13:29
von __blackjack__
@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.

Re: Dictionary durchiterieren?

Verfasst: Donnerstag 20. Februar 2020, 13:47
von Dirki
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*

Re: Dictionary durchiterieren?

Verfasst: Donnerstag 20. Februar 2020, 14:11
von Sirius3
Der Schlüssel ist ja auch ein String.

Re: Dictionary durchiterieren?

Verfasst: Donnerstag 20. Februar 2020, 14:43
von Dirki
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.