Seite 1 von 2
Datei suchen, wenn vorhanden dann löschen
Verfasst: Mittwoch 20. Juni 2007, 08:35
von mazdafox
Hello Leute bin sehr neu auf dem Python gebiet und möchte nun ein Programm schreiben das schau ob in einem Ordner eine Datei vorhanden ist z.b. "test.txt". Wenn sie vorhanden ist soll diese gelöscht werden und wenn nicht einfach weitergemacht werden!
bitte um Hilfestellung, vielleicht mit Code
danke mfg Christoph
Verfasst: Mittwoch 20. Juni 2007, 08:54
von lutz.horn
Code: Alles auswählen
#!/usr/bin/env python
import os
import sys
try:
os.remove(sys.argv[1])
except OSError, e:
print e
Siehe auch
http://docs.python.org/lib/os-file-dir.html
Verfasst: Mittwoch 20. Juni 2007, 09:00
von mazdafox
und wie kann ich geziehlt überprüfen das die datei test.txt vorhandne ist und die dann löschen?
Verfasst: Mittwoch 20. Juni 2007, 09:03
von lutz.horn
Wenn die zu löschende Datei nicht vorhanden ist, wirft os.remove() einen OSError.
Verfasst: Mittwoch 20. Juni 2007, 09:08
von mazdafox
ok danke ich weiß ich nerve aber was mache ich wenn die datei nicht vorhanden ist? weil ich möchte ja sie löschen nur wenn sie vorhanden ist!!
danke
Verfasst: Mittwoch 20. Juni 2007, 09:08
von Zizibee
Oder du machst es so:
Code: Alles auswählen
import os
datei = 'test.dat'
if os.path.isfile(datei): # falls Dabei existiert
os.remove(datei)
Verfasst: Mittwoch 20. Juni 2007, 09:13
von mazdafox
ok super danke!! hat mir sehr geholfen
Verfasst: Mittwoch 20. Juni 2007, 10:02
von mazdafox
so hab dasd jetzt probiert aber es geht nicht, hab das stehen
Code: Alles auswählen
datei= "C:\\TIN_Temp"
if os.path.isfile(datei): # falls Dabei existiert
os.remove(datei)
jedoch schreit er mir bei der funktion die danach ist, die diese datei neu erstellen sollte, das sie bereits vorhanden ist?????
bitte um hilfe!
Verfasst: Mittwoch 20. Juni 2007, 10:14
von fme
Ist die Datei denn wirklich da?
Gib doch einfach mal im if Block einen Text wie "Datei vorhanden" aus.
Verfasst: Mittwoch 20. Juni 2007, 10:18
von mazdafox
hab ich gemacht, aber es schreibt es nicht hin????
aber wenn ich es ausführen kommt das im idle:
Failed to execute. Parameters are not valid.
Output TIN: Dataset C:\TIN_Temp already exists
Failed to execute (CreateTin).
also muss die datei da sein! aber bei der if findet er es nicht!!
Verfasst: Mittwoch 20. Juni 2007, 10:27
von Windtommyhoff
Ich bin mir nicht 100%ig sicher. Aber ich glaube dass python nicht backspace (\) sondern space (/) zur trennung benutzt.
Wenn du also c:/TIN_temp schreibst, könnte es vielleicht klappen..
Aber iwe gesagt, alle Angaben ohen Gewehr..
*peng*
Verfasst: Mittwoch 20. Juni 2007, 10:29
von mazdafox
so habe jetzt auch beides probier
c:\\
c://
c:/
geht alles ned!!
Verfasst: Mittwoch 20. Juni 2007, 10:42
von Zap
Ist TIN_Temp zufällig ein Verzeichnis und wird deshalb nicht als file erkannt?
Verfasst: Mittwoch 20. Juni 2007, 10:44
von mazdafox
scheisse ja ist zwar ein file für ein programm aber in real ist es ein ordner!! gut und wie geht das dann für ordner???
und bei dem 2. file handelt es sich um ein file in einer daten bank
Code: Alles auswählen
if os.path.isfile("Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Route_Dissolve.shp"): # falls Dabei existiert
os.remove("Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Route_Dissolve.shp")
Verfasst: Mittwoch 20. Juni 2007, 10:47
von Zap
mal als allgemeiner Tipp:
Öffne mal die python shell und mache ein "
import os"
Mit "
dir(os)" kannst du dir alle methoden und attribute anzeigen lassen.
Da findest du dann so schöne Sachen wie
mkdir,
isdir und
rmdir
Edit: Ok, isdir ist unter
os.path.isdir versteckt Sorry
Verfasst: Mittwoch 20. Juni 2007, 10:52
von mazdafox
ja das problem hab ich jetzt uach mit der datenbank wie darüber beschrieben!
und er schreibt mir bei
Code: Alles auswählen
if os.path.isdir("C:\\tin_temp"):os.rmdirs("C:\\tin_temp")
directory is not empty!
und läst sie mih nicht löschen!
Verfasst: Mittwoch 20. Juni 2007, 11:03
von Zap
mazdafox hat geschrieben:Code: Alles auswählen
if os.path.isfile("Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Route_Dissolve.shp"): # falls Dabei existiert
os.remove("Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Route_Dissolve.shp")
Ein solcher Aufruf kann nur funktionieren wenn die Datei unter deinem Current Work Directory ( os.getcwd() ) liegt.
Wenn das auch im Tempverzeichnis "c:/TIN_Temp" liegt muss du das auch absolut angeben werden.
Verfasst: Mittwoch 20. Juni 2007, 11:09
von N317V
mazdafox hat geschrieben:ok danke ich weiß ich nerve aber was mache ich wenn die datei nicht vorhanden ist? weil ich möchte ja sie löschen nur wenn sie vorhanden ist!!
danke
Du machst gar nichts. Wenn sie vorhanden ist, wird sie gelöscht. Wenn sie nicht vorhanden ist, dann wird sie
vollautomatisch nicht gelöscht. Genauso wie Kaffee, der nicht in meiner Tasse ist auch automatisch nicht daraus getrunken wird, weil er einfach nicht da ist, selbst wenn ich versuche zu trinken.
Das erste Beispiel mit try und except war nahezu perfekt. Im except-Block hätte ich allerdings nur pass geschrieben, da Du ja wolltest, dass einfach weitergemacht wird.
Verfasst: Mittwoch 20. Juni 2007, 11:15
von Zap
Mal so als kurzer Vorschlag, ohne Netz und doppelten Boden.
Code: Alles auswählen
import os
directory = "c:/mein Directory"
for f in os.listdir(directory):
os.remove(f)
os.rmdir(directory)
Verfasst: Mittwoch 20. Juni 2007, 11:42
von mazdafox
ja nur das er mir bei der variante das tin_temp ordner nicht löscht sonder nur LOL ausgibt!!!! obwohl der order vorhanden ist