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

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.

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.. :P *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

Code: Alles auswählen

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