Seite 1 von 1

Ausgabe umleiten in Datei in Python3

Verfasst: Dienstag 9. Mai 2023, 17:17
von Knuffi
Hallo Leute,

Printausgaben in eine .txt umzuleiten ist kein Problem.

aber wie leite ich die Ausgabe von

pidof programmname

in eine Datei um?

Wer hat einen Tip.

Danke

Knuffi

Re: Ausgabe umleiten in Datei in Python3

Verfasst: Dienstag 9. Mai 2023, 17:22
von geraldfo
pidof programmname > datei

LG

Re: Ausgabe umleiten in Datei in Python3

Verfasst: Dienstag 9. Mai 2023, 17:41
von Knuffi
Danke
Habe auch probiert, kam keine Fehlermeldung. Nur habe ich diese Datei nirgends gefunden. Wo wird diese im Raspberry PI 3 abgespeichert.

Re: Ausgabe umleiten in Datei in Python3

Verfasst: Dienstag 9. Mai 2023, 17:46
von geraldfo
Ich gehe davon aus, dass du das Kommando in der Befehlszeile aufrufst.
In allen mir bekannten System wird datei im aktuellen Arbeitsverzeichnis abgelegt.

Achte darauf, dass eine gleichnamige Datei in diesem Verzeichnis noch nicht existiert. Sie würde sonst überschrieben werden.

Hat nichts mit Python zu tun.

Re: Ausgabe umleiten in Datei in Python3

Verfasst: Dienstag 9. Mai 2023, 17:51
von Knuffi
Ok. Danke mal daddeln was beim Raspberry 3 das Arbeitsverzeichnis ist, im Home/user ist nichts abgespeichert

Re: Ausgabe umleiten in Datei in Python3

Verfasst: Dienstag 9. Mai 2023, 17:55
von Knuffi
Alles klar, ich Pappnase der Pfad kommt vorher
pidof gnokii > /home/user/test.txt

Danke für die Hilfe.
Klasse

Re: Ausgabe umleiten in Datei in Python3

Verfasst: Mittwoch 10. Mai 2023, 10:41
von DeaD_EyE
Das hier ist ein Forum über Python, also gehe ich mal von aus, dass du mit Python die pid-Datei öffnen und irgendwas damit machen willst.

Da unter Linux so gut wie alles eine Datei ist, kommt man an die Namen der laufenden Programme ziemlich einfach.
Zu finden ist der Name in /proc/<PID>/comm.

Wenn man das z.B. mit Python machen will:

Code: Alles auswählen

from pathlib import Path


def pidof(name: str) -> list[int]:
    return [
        int(match.parent.name)
        for match in Path("/proc/").glob("*/comm")
        if match.read_text().rstrip() == name
    ]


pidof(name="bash")

Re: Ausgabe umleiten in Datei in Python3

Verfasst: Mittwoch 10. Mai 2023, 11:21
von __blackjack__
Oder „cross platform“ mit dem `psutil`-Modul:

Code: Alles auswählen

#!/usr/bin/env python3
import psutil


def pidof(name):
    return [
        process.pid
        for process in psutil.process_iter(["name"])
        if process.info["name"] == name
    ]


def main():
    print(pidof("apache2"))


if __name__ == "__main__":
    main()

Re: Ausgabe umleiten in Datei in Python3

Verfasst: Mittwoch 10. Mai 2023, 12:17
von DeaD_EyE
Ja, das ist auf jeden Fall die bessere Lösung, da man sich selbst nicht um die Unterschiede des OS kümmern muss.