Seite 1 von 4
bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 08:21
von eyescube
Hallo,
ich hab nun einige Sachen ausprobiert aber ich bekomm ständig Fehler.
ich möchte gern in einen Ordner wechseln sehen was die neueste Datei ist und die neueste Datei soll die alte überschreiben.
Code: Alles auswählen
import os
os.chdir("../Linux_Client")
file=open("test.txt","w")
file.write("12345")
file.close()
wie gesagt das war nur ein Test ich bin eig PHP entwickler deswegen ../ muss ich denn bei sowas den Pfad angeben? was is wenn ich das einfach nur suchen will (den Ordner) und dann sagen will gefunden? ok öffnen.
Hoffe jemand kann mir da mal kurz aufklären in der Doku hab ich nix gefunden btw bin irgendwie Blind
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 08:38
von BlackJack
@eyescube: Was für Sachen hast Du ausprobiert und welche Fehler bekommst Du? Wenn Du das nicht konkreter angibst, kann man dazu auch nicht viel sagen.
In einen Ordner wechseln möchtest Du eher nicht, weil `os.chdir()` das Arbeitsverzeichnis für das gesamte Programm verändert. Damit änderst Du einen globalen Zustand, mit dem andere Teile des Programms vielleicht nicht rechnen. Es ist robuster einfach mit relativen oder absoluten Pfaden zu arbeiten und nicht das Arbeitsverzeichnis zu wechseln.
Die Namen in einem Verzeichnis bekommt man mit `os.listdir()`. Die Metadaten, wie Zeitstempel gibt's mit `os.stat()`. Und um das Minimum von etwas zu ermitteln gibt es die `min()`-Funktion -- in diesem Fall im Zusammenhang mit dem `key`-Argument dieser Funktion.
Der Zusammenhang von PHP und '../' ist mir jetzt nicht so ganz klar!?
Gibt es bei dem Test denn ein Verzeichnis mit dem Namen `Linux_Client`, das über dem Arbeitsverzeichnis des Prozesses liegt? Kommt da ein Fehler? Wenn ja welcher?
Wenn Du ein Verzeichnis suchen willst, dann musst Du danach suchen. Klingt komisch. Ist aber so. Dazu könntest Du Dir die `os.walk()`-Funktion anschauen.
Was verstehst Du unter "öffnen" eines *Verzeichnisses*!?
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 08:48
von eyescube
zum Beispiel hab ichs so versucht
Code: Alles auswählen
import os, sys
os.walk("Linux_Client")
file=open("hello.txt","r")
file.close
print file
ausgabe
python ordnersuchen.py
Traceback (most recent call last):
File "ordnersuchen.py", line 3, in <module>
file=open("hello.txt","r")
IOError: [Errno 2] No such file or directory: 'hello.txt'
na bei PHP gib ich einfach ein spring /datei/ dahin
oder übergeordnet ../datei/
Die Datei hello.txt steht im Order Linux_Client. irgendwie komm ich mit Ordnern einfach net zurecht.
os.walk os.path schon versucht.
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 08:54
von eyescube
ah hab nun was gefunden und zwar:
import os
datei = "test.txt"
verzeichnis = "Linux_client"
pfad = verzeichnis + os.sep + datei
if os.path.exists(verzeichnis):
jetz muss ich nur das ändern mit wähle neueste Datei und überschreibe diese alte Datei ^^
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 09:08
von Rekrul
Schau dir mal
os.path.join an.
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 09:17
von eyescube
ich hab das gefunden
import os
datei = "test.txt"
verzeichnis = "test"
pfad = verzeichnis + os.sep + datei
if not os.path.exists(verzeichnis):
os.mkdir(verzeichnis)
offen = open(pfad, "w")
offen.write("hallo")
offen.close()
das verzeichnis ist in dem Ordner wo das Script abgelegt wird.
sprich der könnte auf einma wo anders liegen also darf ich keinen festen Verzeichnis-Pfad verwenden
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 09:25
von BlackJack
@eyescube: Du solltest Dir vielleicht mal die Dokumentation inklusive Beispielen zu den Funktionen anschauen, die Du verwendest. `os.walk()` einfach so aufzurufen und dann nichts mit dem Ergebnis zu machen, bringt überhaupt nichts. Und wenn das Verzeichnis `Linux_Client` nicht im aktuellen Arbeitsverzeichnis liegt, dann wird man das bei `os.walk()` auch nicht so angeben können. Wenn man das könnte, dann bräuchte man es ja nicht suchen.
eyescube hat geschrieben:na bei PHP gib ich einfach ein spring /datei/ dahin
oder übergeordnet ../datei/
Könntest Du den Satz vielleicht noch einmal mit Grammatik und verständlich formulieren?
Wenn das Verzeichnis relativ zum Skript abgelegt ist, dann kannst Du über die Pfadangabe des Moduls dorthin gelangen. Die ist in jedem Python-Modul an den Namen `__file__` gebunden. Da kannst Du den Verzeichnisteil mit `os.path.basename()` von ermitteln.
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 09:35
von eyescube
ich hab nun einfach die Teile genommn und zusammengefügt.
import os
import shutil
datei = "test.txt"
verzeichnis = "Linux_Client"
pfad = verzeichnis + os.sep + datei
if os.path.exists(verzeichnis):
shutil.copyfile("test.txt","hallo.txt")
hab nun 2 Dateien in den Ordner gepackt und kommt folgender Fehler:
python ordnersuchen.py
Traceback (most recent call last):
File "ordnersuchen.py", line 8, in <module>
shutil.copyfile("test.txt","hallo.txt")
File "/usr/lib/python2.6/shutil.py", line 52, in copyfile
fsrc = open(src, 'rb')
IOError: [Errno 2] No such file or directory: 'test.txt'
obwohl im Pfad die Datei test.txt und hallo.txt existieren.
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 09:41
von Xynon1
Es bringt nichts zu prüfen ob ein irgendein Verzeichnis da ist, um dann doch im aktuellen die Dateien zu suchen.

Du musst schon deinen erstellten Pfad angeben und nicht "test.txt". Zudem wurde dir schon gesagt das du statt "+", "os.path.join" für das verbinden von Pfaden nehmen solltest.
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 10:01
von eyescube
ahhh Cool Danke aber warum brauch ich für shutil immer einen festen Pfad?
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 10:04
von Xynon1
AFAIK kannst du auch jederzeit den Pfad nochmal mit der "os.path.relpath()" aufrufen, dann erhälts du einen relativen Pfad.
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 10:15
von eyescube
da bekomm ich ärger mit IO
python ordnersuchen.py
Traceback (most recent call last):
File "ordnersuchen.py", line 9, in <module>
shutil.copyfile(full,"hallo.txt")
File "/usr/lib/python2.6/shutil.py", line 52, in copyfile
fsrc = open(src, 'rb')
IOError: [Errno 2] No such file or directory: '../Linux_Client'
ah ne jetz gehts danke

Bin euch echt dankbar +freu+

un nun eine letzte frage
wie bekomm ich raus welche datei die neueste in dem Ordner Linux_Client ist?
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 10:20
von Xynon1
Was hast du denn geschrieben, deinem Beispiel oben zu folge müsste es etwa so heißen:
Code: Alles auswählen
import os
import shutil
datei = "test.txt"
verzeichnis = "Linux_Client"
pfad = os.path.relpath(os.path.join(verzeichnis, datei))
if os.path.exists(verzeichnis):
shutil.copyfile(pfad, "hallo.txt")
"hallo.txt" wird so aber noch in dein Verzeichnis in dem das Script liegt kopiert.
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 10:24
von Xynon1
eyecube hat geschrieben:wie bekomm ich raus welche datei die neueste in dem Ordner Linux_Client ist?
Mit
os.path - getatime, getctime, getmtime
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 10:26
von BlackJack
@eyescube: Was ist ein "fester Pfad"? Du fragst nicht ernsthaft warum man den Pfad angeben muss, den man auch meint, statt einfach einen Dateinamen anzugeben und das Programm wird dann schon suchen wo im Dateisystem der wohl sein könnte? Und was ist wenn es den mehr als einmal gibt?
@Xynon1: Ist ja schön dass das geht, aber was soll das? Welchen Vorteil hat es daraus eine relative Pfadangabe zu machen? Und wie schlau ist es jemandem der einfach alles übernimmt ohne darüber nachzudenken oder es zu verstehen auch noch eine unnötig kompliziertere Lösung zu zeigen.
Eyescube wird hier wohl solange dumm weiter betteln bis eine Komplettlösung da ist.
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 10:31
von Xynon1
@BlackJack
Der einzige Vorteil den ich in relativen Pfadenangaben sehe, ist eigentlich nur wenn man in einem eventuellen Stacktrace nicht alle Pfade offen sichtbar machen möchte. Was den zweiten Teil angeht hast du natürlich vollkommen recht.

Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 10:35
von eyescube
quatsch bevor er das hinschrieb hab ich das Problem schon gelöst gehabt.
Nur was bringt mir der feste Pfad wenn ich auf ner 2-3-4 Festplatte das script un das ganze wo anders ableg?
das war damit gemeint
ausserdem versuch ichs eh selber und ich denke n Forum is dazu da wenn man n Brett vorm Kopf hat nachzufragen
ich bin PHP-Entwickler ich tu mich halt schwer mit Python und lernen will ichs trotzdem. -.-
Warum will das keiner verstehn?
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 10:46
von Xynon1
eyecube hat geschrieben:Nur was bringt mir der feste Pfad wenn ich auf ner 2-3-4 Festplatte das script un das ganze wo anders ableg?
Exakt das selbe wie der absolute Pfad nur halt "maskiert".
eyecube hat geschrieben:ich bin PHP-Entwickler ich tu mich halt schwer mit Python und lernen will ichs trotzdem. -.-
Wo soll denn bei Pfaden in PHP eigentlich der Unterschied zu Python sein ?
Abgesehen davon das Python mehr und schönere Methoden zum bearbeiten von Pfaden hat, sollte selbst die __file__-Variable nicht fremd sein, PHP hat ja auch __FILE__ in jedem Script definiert.
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 10:50
von eyescube
Naja ich hab jetz auch kein bock hier mich dauernd zu rechtfertigen.
Danke für deine Doku umsetzen lässt sichs auch net bin weg bis die Tage -.-
Re: bestimmten Ordner suchen
Verfasst: Montag 11. April 2011, 11:16
von BlackJack
@eyescube: Ein Forum ist dazu da nachzufragen, aber Du musst die Antworten dann schon verstehen und umsetzen. Ein Forum ist nicht dazu da ständig nur fertige Quelltextschnippsel zu liefern, die man ohne drüber nachzudenken in das aus eben solchen Quelltextschnippseln bestehende Programm rein zu kopieren.
Du kannst halt einfach nicht programmieren und zeigst auch Null Interesse es zu lernen. Du schreibst unverständliche Beiträge. Zeigst teils gruseligen Quelltext und gehst nicht ein Stück auf Verbesserungsvorschläge ein. Wenn man Die Funktionen nennt, mit denen Du das Problem angehen kannst, dann rufst Du die einfach irgendwie auf und sagst "geht nicht", wobei man deutlich sieht dass Du Dich mit der Funktion und deren Dokumentation gar nicht beschäftigt hast. Wo soll denn da die Motivation herkommen Dir zu programmieren lernen zu helfen!?