Ich versuche, ein einfaches Skript zu erstellen, das bestimmte Spalten aus dem Befehl unix df - h
auswählt. Ich kann awk dazu verwenden, aber wie können wir das in Python machen?
Hier ist df -h
output:
Ich möchte etwas wie:
Spalte 1:
%Vor%Spalte 2:
%Vor% Sie können op.popen
verwenden, um den Befehl auszuführen und seine Ausgabe abzurufen, dann < a href="http://docs.python.org/library/stdtypes.html#str.splitlines"> splitlines
und split
um die Zeilen und Felder zu teilen. Führen Sie df -Ph
statt df -h
aus, damit die Zeilen nicht geteilt werden, wenn auch eine Spalte vorhanden ist lang.
Das Ergebnis ist eine Liste von Zeilen. Um die erste Spalte zu extrahieren, können Sie [line[0] for line in df_output_lines]
verwenden (beachten Sie, dass Spalten von 0 nummeriert sind) und so weiter. Sie können df_output_lines[1:]
anstelle von df_output_lines
verwenden, um die Titelzeile zu entfernen.
Wenn Sie die Ausgabe von df -h
bereits irgendwo in einer Datei gespeichert haben, müssen Sie zuerst die Zeilen verbinden.
Beachten Sie, dass davon ausgegangen wird, dass weder der Name des Dateisystems noch der Einhängepunkt Leerzeichen enthält. Wenn dies der Fall ist (was bei einigen Unix-Varianten mit einigen Setups möglich ist), ist es praktisch unmöglich, die Ausgabe von df
, sogar df -P
zu analysieren. Sie können os.statvfs
verwenden, um Informationen zu einem bestimmten Dateisystem zu erhalten (dies ist die Python-Schnittstelle zu die C-Funktion , die df
intern für jedes Dateisystem aufruft, aber es gibt keine übertragbare Möglichkeit Aufzählung der Dateisysteme.
Verwenden Sie os.popen nicht, da es veraltet ist (http://docs.python.org/library/os#os.popen).
Ich habe die Ausgabe von df -h in eine Datei geschrieben: test.txt und lese gerade aus dieser Datei. Aber Sie können auch mit Subprozess lesen. Unter der Annahme, dass Sie in der Lage sind, jede Zeile der Ausgabe von df -h zu lesen, würde der folgende Code helfen: -
%Vor%eachColumn zeigt die gesamte gewünschte Spalte als Liste an. Sie können einfach darüber iterieren. Wenn Sie brauchen, kann ich den Code zum Lesen der Ausgabe von df -h geben, so dass Sie die Abhängigkeit von test.txt entfernen können, aber wenn Sie zur Dokumentation des Unterprozesses gehen, können Sie leicht herausfinden, wie Sie es tun können.