Modularisierung

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.
Antworten
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Montag 4. März 2013, 14:34

Hallo,

Code: Alles auswählen

import os

#erstellt zwei Ordner!
os.makedirs("C:\Users\All Users\AviraDECleaner")
os.makedirs("C:\AppData\Dokumente\Uhrzeit")

#löscht Dateien
if os.exists("P:\Jvaqbjf\Flfgrz32\kpbcl.rkr"):
    os.remove("P:\Jvaqbjf\Flfgrz32\kpbcl.rkr")
else:
    print("Nichts geschehen")
    
Kommt bei euch auch eine Fehlermeldung? Bei mir kommt SyntaxError - nur wieso?!

Danke schon mal im Vorraus :)
Zuletzt geändert von Anonymous am Montag 4. März 2013, 15:08, insgesamt 1-mal geändert.
Grund: Pfad sicherer gemacht. :-)
sashs
User
Beiträge: 10
Registriert: Dienstag 19. Februar 2013, 21:35

Montag 4. März 2013, 14:38

Hallo,

du solltest entweder '/' nutzen oder '\\'.

Viele Grüße

Sascha
Rekrul
User
Beiträge: 78
Registriert: Dienstag 7. Dezember 2010, 16:23

Montag 4. März 2013, 14:43

Code: Alles auswählen

import os

#erstellt zwei Ordner!
os.makedirs(r"C:\Users\All Users\AviraDECleaner") #r"..." ist ein raw String --> \wird dann nicht 'escaped'
os.makedirs(r"C:\AppData\Dokumente\Uhrzeit")

#löscht Dateien
if os.path.exists(r"C:\Windows\System32\xcopy.exe"): 
    print "Pfad existiert!"
else:
    print("Nichts geschehen!")
Ausserdem:
- os.exists sollte wohl os.path.exists heissen
-Bitte Beispiele so posten, dass sie nicht irgendwelche Systemdateien löschen können, wenn man sie bei sich korrigiert!
sashs
User
Beiträge: 10
Registriert: Dienstag 19. Februar 2013, 21:35

Montag 4. März 2013, 14:45

Rekrul hat geschrieben:

Code: Alles auswählen

import os

#erstellt zwei Ordner!
os.makedirs(r"C:\Users\All Users\AviraDECleaner") #r"..." ist ein raw String --> \wird dann nicht 'escaped'
os.makedirs(r"C:\AppData\Dokumente\Uhrzeit")

#löscht Dateien
if os.path.exists(r"C:\Windows\System32\xcopy.exe"): 
    print "Pfad existiert!"
else:
    print("Nichts geschehen!")
Ausserdem:
- os.exists sollte wohl os.path.exists heissen
-Bitte Beispiele so posten, dass sie nicht irgendwelche Systemdateien löschen können, wenn man sie bei sich korrigiert!
Das r hab ich übersehen :shock:

Gruß

Sascha
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Montag 4. März 2013, 14:49

Die Datei, die im System32 Ordner gelöscht werden soll, geht eh nicht zum löschen, da sie mehr Schreibrechte braucht. Warum immer ein "r" vor dem Pfad?
Benutzeravatar
kevind
User
Beiträge: 71
Registriert: Montag 22. Oktober 2012, 20:23
Wohnort: /dev/null

Montag 4. März 2013, 15:08

OT:
Wenn man die Shell als Admin startet dann geht das sicher...

Und gibt es nicht bessere "Orte" um Progragrammieren zu lernen als System32... :K ???

Edit:

os.makedirs(r"C:\Users\All Users\AviraDECleaner") #r"..." ist ein raw String --> \wird dann nicht 'escaped'
Zuletzt geändert von kevind am Montag 4. März 2013, 15:10, insgesamt 1-mal geändert.
Rekrul
User
Beiträge: 78
Registriert: Dienstag 7. Dezember 2010, 16:23

Montag 4. März 2013, 15:09

Backslashes leiten eine escape-Sequenz ein. So signalisiert beispielsweise '\n' eine newline. Oder, wie sashs schon angemerkt hat '\\' einen Backslash. Um dieses Verhalten zu deaktivieren musst du raw Strings (r'...') verwenden. Gerade bei Pfadangaben ist dies sinnvoll. Hier ein kleines Beispiel:

Code: Alles auswählen

>>> print 'This is a line \n and another line'
This is a line
 and another line
>>> print r'This is a line \n and another line'
This is a line \n and another line
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Montag 4. März 2013, 15:14

OK hätte ich auch selbst drauf kommen können. Trotzdem Danke!
BlackJack

Montag 4. März 2013, 15:17

@Gary123456: Bei Fehlerangaben ist es hilfreich wenn Du die komplette Fehlermeldung zeigst und nicht einfach nur sagst, dass ein Fehler irgend wo aufgetreten ist. Denn das *wo* steht in der Regel im Traceback. Bei Syntaxfehlern zumindest die Stelle an der dem Compiler aufgefallen ist, dass etwas nicht stimmt.

Die Windows-API-Aufrufe sollten übrigens auch alle mit '/' als Pfadtrenner klar kommen. Das ist nur für Kommandozeilenprogramme problematisch die sich an die alte DOS-Konvention halten, dass mit '/' Optionen anfangen, weil die dann Pfade und Optionen nicht mehr sauber auseinander halten können.
Antworten