Frage zu Verzeichnissen und Dateien

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.
the-slaughter
User
Beiträge: 15
Registriert: Montag 28. August 2006, 19:46
Wohnort: München

gerold hat geschrieben:
the-slaughter hat geschrieben:jedoch habe ich da keine GUI, wie man es unter Python einrichten kann.
Hi The-Slaughter!

Willkommen im Python-Forum!

Mit wxPython http://wxpython.org lassen sich interessante GUI erstellen. Siehe auch: http://www.python-forum.de/topic-6993.html

Und zum eigentlichen Thema habe ich auch noch einen Link: http://www.python-forum.de/post-40236.html

mfg
Gerold
:-)
Hi Gerold, habe den letzen Link ausprobiert, komme da aber nicht so ganz weiter. Denn wenn ich das Script ausführe (die Methode mit os.walk() ) dann werden mir nur die Ordner unter /home/peter/ogg/ angezeigt, aber nicht die Ordner der Ordner von /home/peter/ogg .
Eigentlich müssten ja nur das Ergebnis, was ich bekomme, wieder mit dem nahezu selben befehl verarbeitet werden, nur das sich das Verzeichnis etwas ändert. Oder benötigt man für os.walk nochmal einen speziellen parameter um auch an die unterordner zu gelangen? Habe mir schon im internet mehrere verschiedene Websites über die os Befehle angesehen, aber so richtig weiter kommen tue ich da nicht.
Mag sein, das ich da jetzt für dich als Profi mich ungewollt schwer tue, aber ich bin wirklich sehr an Python interressiert (werde mir wohl auch in der nächsten Zeit ein weiteres Python Buch zulegen)

Mfg
The-Slaughter


edit:
Habe nun hier folgendes Problem:

Code: Alles auswählen

import os
start='/home/peter/ogg/'
listenort='/home/peter/liste'
oberinhalt = os.listdir(start)
liste = file(listenort, "w")
liste.write(oberinhalt)
liste.close()
auf der Konsole bekomme ich daraufhin folgende Antwort:
peter@pc24:~> ./search.py
Traceback (most recent call last):
File "./search.py", line 70, in ?
liste.write(oberinhalt)
TypeError: argument 1 must be string or read-only character buffer, not list
peter@pc24:~>
Da bin ich echt am Ende, welchen Fehler habe ich denn in Zeile 70? Oberinhalt wurde ja schon definiert, liste wird auch tatsächlich angelegt, nur leider eben ohne Inhalt. Habe das selbe spielchen auch schon mit os.walk() ausprobiert, leider auch hier die selbe Fehlermeldung!

Vielen Dank
The-Slaughter
Maho
User
Beiträge: 10
Registriert: Sonntag 27. August 2006, 11:14

Du kannst keine Liste in eine Datei schreiben. Das muss ein String sein.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

the-slaughter hat geschrieben:Denn wenn ich das Script ausführe (die Methode mit os.walk() ) dann werden mir nur die Ordner unter /home/peter/ogg/ angezeigt, aber nicht die Ordner der Ordner von /home/peter/ogg.
Hi The-Slaughter!

Das funktioniert so:

Code: Alles auswählen

import os
import os.path

for root, dirs, files in os.walk(r"C:\Windows\system32"):
    for filename in files:
        filepath = os.path.join(root, filename)
        print filepath
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
the-slaughter
User
Beiträge: 15
Registriert: Montag 28. August 2006, 19:46
Wohnort: München

Hi Gerold, Vielen Vielen Dank! Funktioniert super 1A, sogar die Umlaute werden korrekt angezeigt! Wahnsinn, echt besten Dank an dich! Mit einem ähnlichen Befehl habe ich es auch schon ausprobiert (wie es hier bereits im forum stand) aber da hat mir wohl, wenn ich es so vergleiche das os.path.join gefehlt.

Besten Dank!
the-slaughter
User
Beiträge: 15
Registriert: Montag 28. August 2006, 19:46
Wohnort: München

ok, jetzt melde ich mich mal zurück. Ich habe festgestellt, dass das ganze nicht funktioniert, wenn ein Ordnername ein Minus im Namen trägt. Deshalb verwende ich nun einfach os.system . Nun funktioniert auch die Suche sowohl unter Windows als auch unter Linux, jedoch habe ich noch ein kleines Problem: Wie finde ich heraus, welcher Benutzer angemeldet ist?
ich habe heute schon versucht irgendwie das ganze mit:

Code: Alles auswählen

import os
os.path.expanduser(~)
zu erledigen doch das ganze hat mir keinen Erfolg gebracht. Obwohl in der Offiziellen Doku des so drinnen stand (außer ich habe es falsch Interpretiert)

Vielen Dank
The-Slaughter
Brok3r
User
Beiträge: 29
Registriert: Montag 24. Oktober 2005, 13:48

ein

Code: Alles auswählen

os.getenv('username')
sollte deine gesuchte Funktion sein
BlackJack

Hm:

Code: Alles auswählen

In [8]: print os.getenv('username')
None
Und die `expanduser()` Funktion gibt nicht den Benutzernamen zurück sondern den Pfad zum Heimatverzeichnis.
Nirven
User
Beiträge: 130
Registriert: Mittwoch 10. Mai 2006, 08:18
Wohnort: Bremerhaven

Unter Unix und Windows funktioniert das mit der Funktion getuser() aus dem Standard-Modul getpass.
Antworten