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

Ich denke N317V hat das mit dem "nicht leeren" Ordner überlesen.
Weiß atm nicht ob es ne Möglichkeit gibt eine rmdir ähnliche Methode zu verwenden die force ein Verzeichnis löscht.
Also meine Lösung da oben sollte funktionieren.
Erst werden die Dateien im Ordner gelöscht dann der Ordner.
Es fehlen allerdings die try: except Blöcke, wenn dein Programm dir nicht die exceptions bei Fehlschlägen um die Ohren hauen soll.
BlackJack

Zum löschen von ganzen Verzeichnisbäumen gibt's `shutil.rmtree()`.
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

danke leute habe schon eine neue möglichkeit gefunden und es funktioniert nun! hier mal mein fertiges programm kann man daran noch was verbessern??? fällt euch was auf?

mfg christoph

Code: Alles auswählen

# ---------------------------------------------------------------------------
# SDE_TIN_temp.py
# Created on: Mi Jun 13 2007 
#   (generated by Pueler Christoph)
# ---------------------------------------------------------------------------

# Import system modules
import sys, string, os, arcgisscripting, datetime

# Create the Geoprocessor object
gp = arcgisscripting.create()

print ("--------------------------- Opening Tool: 2D to 3D ---------------------------")
print ("")

now1 = datetime.datetime.now()

print "------------- Calculating started at: " , now1 , "------------"
print ("")

# Check out any necessary licenses
gp.CheckOutExtension("3D")

# Load required toolboxes...
gp.AddToolbox("C:/Programme/ArcGIS/ArcToolbox/Toolboxes/3D Analyst Tools.tbx")
gp.AddToolbox("C:/Programme/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx")

# Local variables...
Delete_succeeded = "false"
TIN_Temp = "C:\\TIN_Temp"
TIN_Temp_2 = "C:\\TIN_Temp"
DHM_Point_fein1 = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_fein1"
DHM_Point_fein2 = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_fein2"
DHM_Point_grob = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_grob"
DHM_Polyline_richtig_Albania = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Polyline_richtig_Albania"
DHM_Polyline_richtig_Greece = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Polyline_richtig_Greece"
DHM_Route_Dissolve = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Route_Dissolve"
DHM_Route = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Route"
DHM_Terrain = "Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Terrain"

print ("-------------------------- Creating TIN local at C:\ -------------------------")

# Process: Create TIN...
try: 
  gp.Delete_management(TIN_Temp, "Tin")
except:
  pass
gp.CreateTin_3d(TIN_Temp, "PROJCS['WGS_1984_UTM_Zone_34N',GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],PARAMETER['False_Easting',500000.0],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',21.0],PARAMETER['Scale_Factor',0.9996],PARAMETER['Latitude_Of_Origin',0.0],UNIT['Meter',1.0]]")

# Process: Edit TIN...
gp.EditTin_3d(TIN_Temp, "'Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_fein1' GRID_CODE <None> masspoints false;'Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_fein2' GRID_CODE <None> masspoints false;'Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Point_grob' B1 <None> masspoints false;'Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Polyline_richtig_Albania' ELEVATION <None> hardline true;'Database Connections\\TAP.sde\\DHM.Test_3D\\DHM.Polyline_richtig_Greece' ELEVATION <None> hardline true")

print ("                 !!!!! Saving TIN successfully finished !!!!!                 ")
print ("")
print ("-------------------------------- Merging Route -------------------------------")

# Process: Dissolve...
try: 
  gp.Delete_management(DHM_Route_Dissolve, "FeatureClass")
except:
  pass
gp.Dissolve_management(DHM_Route, DHM_Route_Dissolve, "", "", "MULTI_PART")

print ("               !!!!! Merging Route successfully finished !!!!!                ")
print ("")
print ("--------------------------- Interpolate_Shape_to_3D --------------------------")
print ("---------------------------- Getting Input Surface ---------------------------")
print ("------------------------- Getting Input Feature Class ------------------------")
print ("----------------------- Exporting Output Feature Class -----------------------")

# Process: Interpolate Shape...
try: 
  gp.Delete_management(DHM_Terrain, "FeatureClass")
except:
  pass
gp.InterpolateShape_3d(TIN_Temp_2, DHM_Route_Dissolve, DHM_Terrain, "", "1", "BILINEAR")

print ("           !!!!! Interpolate Shape to 3D successfully finished !!!!!          ")
print ("")
print ("------------------------ Deleting TIN from local disk ------------------------")

# Process: Delete...
gp.Delete_management(TIN_Temp_2, "Tin")

print ("                !!!!! Deleting TIN successfully finished !!!!!                ")
print ("")

now2 = datetime.datetime.now()

print "       !!! Tool: 2D to 3D successfully finished after",now2-now1,"!!!      "
print ("")
print ("")
print ("------------------------ !!! Press enter to close !!! ------------------------")

wait=raw_input()
BlackJack

``print`` ist keine Funktion, die Klammern um die "Argumente" sehen "komisch" aus.

Den "Quelltext" für die GIS-Anwendung hätte ich nicht auf eine Monsterzeile gepackt.

Und ein ``except:`` ohne eine konkrete Ausnahme sollte man nicht verwenden. Das verschluckt wirklich *alles* und erschwert damit die Fehlersuche ungemein.
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

was soll ich statt print nehmen?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Du sollst statt print ("blubb") print "blubb" schreiben :)
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

vorallem mehrzeilige Ausgaben sind in der Regel so besser:

Code: Alles auswählen

print """Angefangen mit 3 Anführungszeichen
und
abschließend mit 3 Anführungszeichen"""
mazdafox
User
Beiträge: 13
Registriert: Mittwoch 20. Juni 2007, 08:32

sind nicht mehrzeigig! möchte nur abstände daher das print ""
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

mazdafox hat geschrieben:sind nicht mehrzeigig! möchte nur abstände daher das print ""
Und wie mehrzeilig das ist:

Code: Alles auswählen

print "       !!! Tool: 2D to 3D successfully finished after",now2-now1,"!!!      " 
print ("") 
print ("") 
print ("------------------------ !!! Press enter to close !!! ------------------------") 
geht auch so:

Code: Alles auswählen

mein_text = """       !!! Tool: 2D to 3D successfully finished after %s!!!


------------------------!!! Press enter to close !!! ------------------------"""

print mein_text % str(now2-now1)
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Zap hat geschrieben:Ich denke N317V hat das mit dem "nicht leeren" Ordner überlesen.
Stimmt! Das hab ich nicht gelesen. Ich hatte mich ja schon auf einen viel früheren Beitrag bezogen. Sorry!
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Antworten