Datei suchen, wenn vorhanden dann löschen

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.
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

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
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

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
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

und wie kann ich geziehlt überprüfen das die datei test.txt vorhandne ist und die dann löschen?
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Code: Alles auswählen

#!/usr/bin/env python

import os

os.remove("test.txt")
Wenn die zu löschende Datei nicht vorhanden ist, wirft os.remove() einen OSError.
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

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
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

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)
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

ok super danke!! hat mir sehr geholfen
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

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!
fme
User
Beiträge: 34
Registriert: Sonntag 1. April 2007, 18:58
Wohnort: Bremen

Ist die Datei denn wirklich da?

Gib doch einfach mal im if Block einen Text wie "Datei vorhanden" aus.
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

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!!
Benutzeravatar
Windtommyhoff
User
Beiträge: 32
Registriert: Donnerstag 15. März 2007, 13:01
Kontaktdaten:

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.. :P *peng*
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

so habe jetzt auch beides probier

c:\\
c://
c:/

geht alles ned!!
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Ist TIN_Temp zufällig ein Verzeichnis und wird deshalb nicht als file erkannt?
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

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")
Zuletzt geändert von mazdafox am Mittwoch 20. Juni 2007, 10:48, insgesamt 1-mal geändert.
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

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 ;)
Zuletzt geändert von Zap am Mittwoch 20. Juni 2007, 10:53, insgesamt 1-mal geändert.
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

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!
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

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.
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

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.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

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)
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

ja nur das er mir bei der variante das tin_temp ordner nicht löscht sonder nur LOL ausgibt!!!! obwohl der order vorhanden ist

Code: Alles auswählen

try: 
  os.rmdir("C:\\tin_temp")
except:
  print ("LOL")
Antworten