512 - ''grosese aktulles Verzeichniss" geht nicht?

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.
bennym
User
Beiträge: 36
Registriert: Freitag 13. Oktober 2006, 21:17
Kontaktdaten:

512 - ''grosese aktulles Verzeichniss" geht nicht?

Beitragvon bennym » Mittwoch 25. Oktober 2006, 15:37

Hallo
Wieder mal eines der langweiligen newbie probleme....

Trotzdem komm ich ohne eure hilfe nicht weiter:

Code: Alles auswählen

import os
512 - int(os.system("du -s|awk {'print $1'}"))



Warum kommt nicht das Ergebniss von 512 - ''grosese aktulles Verzeichniss" raus?


mfg benny
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Mittwoch 25. Oktober 2006, 16:30

Hoi,

tja, was kommt denn bei Dir heraus? Ggf. hilt eine Fehlermeldung und das Anzeigen eines Ergebnisses, wenn es darum geht Fehler zu finden.

Dein Befehl in os.system sollte schon die Zusammenfassung für das aktuelle Verzeichnis liefern. Aber bist Du Dir sicher, daß Du genau das willst? Was ist denn Dein eigentliches Ziel? Vielleicht können wir Dir einen Tipp geben, wie man das in Python machen kann ;-).

Gruß,
Christian
bennym
User
Beiträge: 36
Registriert: Freitag 13. Oktober 2006, 21:17
Kontaktdaten:

Beitragvon bennym » Mittwoch 25. Oktober 2006, 16:55

Hallo CM!
Danke fuer dein Bemuehen!

Mein Ziel ist, 512 mb (die groesse meines mp3players) - Die Groesse des Verzeichnisses.
Wenn das Ergebniss dann negativ ist, soll er das Programm abbrechen.

Das Ergebnis von meinem Snippet ist immer die Groesse des aktuellen Verzeichnisses, welche das script dann auf dem screen ausgibt(eine Zahl).Die 512 davor und das minus werden ignorirert.

mfg benny
BlackJack

Re: 512 - ''grosese aktulles Verzeichniss" geht nicht?

Beitragvon BlackJack » Mittwoch 25. Oktober 2006, 17:17

bennym hat geschrieben:

Code: Alles auswählen

import os
512 - int(os.system("du -s|awk {'print $1'}"))



Warum kommt nicht das Ergebniss von 512 - ''grosese aktulles Verzeichniss" raus?


Weil `os.system()` den Rückgabewert des Programms liefert und nicht dessen Bildschirmausgabe, die landet auf dem Bildschirm, darum siehst Du die dort auch.

Das Du von der 512 nichts siehst, liegt daran das Du nichts ausgibst. Wenn Du einfach so ``42`` in Dein Skript schreibst, wird das ja auch nicht ausgegeben, sondern erst wenn Du ein ``print`` davor setzt.

Wenn Du das tust, dann wird nach der Verzeichnisgrösse wahrscheinlich eine 512 ausgegeben weil der Rückgabewert eines Programms per Konvention 0 ist, falls keine Fehler aufgetreten sind.

Wenn Du die Ausgabe eines Programms haben möchtest, dann schau mal in das `subprocess` Modul.

Aber ich würde lieber `os.walk()` und `os.path.getsize()` benutzen, dann bist Du nicht darauf angewiesen, dass ``du`` und ``awk`` auf dem System vorhanden sind.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Re: 512 - ''grosese aktulles Verzeichniss" geht nicht?

Beitragvon Rebecca » Mittwoch 25. Oktober 2006, 17:34

BlackJack hat geschrieben:Aber ich würde lieber `os.walk()` und `os.path.getsize()` benutzen, dann bist Du nicht darauf angewiesen, dass ``du`` und ``awk`` auf dem System vorhanden sind.
...das habe ich in Bennyms anderem Thread auch vorgeschlagen und sogar implementiert. :roll:

Mal so aus Interesse: Ich kenne mich mit awk nicht wirklich aus, aber ist | awk {print $1'} nicht ueberfluessig?

Ich hasse Firefox...
bennym
User
Beiträge: 36
Registriert: Freitag 13. Oktober 2006, 21:17
Kontaktdaten:

Beitragvon bennym » Mittwoch 25. Oktober 2006, 17:54

Mal so aus Interesse: Ich kenne mich mit awk nicht wirklich aus, aber ist | awk {print $1'} nicht ueberfluessig?

Nein ist es nicht, weil manchmal noch eine pfadangabe/bzw. ein . auf du -s folgt und es dann kein Zahl ausspuckt.

mfg benny
bennym
User
Beiträge: 36
Registriert: Freitag 13. Oktober 2006, 21:17
Kontaktdaten:

Beitragvon bennym » Mittwoch 25. Oktober 2006, 18:16

Vielen Dank an alle !!!
..das habe ich in Bennyms anderem Thread auch vorgeschlagen und sogar implementiert. Rolling Eyes

Besonders an Rebecca! Irgendwie hat thunderbird die benchrichtigungsmail beim alten Thread in den junk geworfen.

mfg benny
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Beitragvon birkenfeld » Donnerstag 26. Oktober 2006, 21:00

Die Ausgabe eines Befehls kann man ohne großes Überlegen mit commands.getoutput bekommen.

Wer ist online?

Mitglieder in diesem Forum: brainstir