Seite 1 von 1

Modularisierung

Verfasst: Montag 4. März 2013, 14:34
von Gary123456
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 :)

Re: Modularisierung

Verfasst: Montag 4. März 2013, 14:38
von sashs
Hallo,

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

Viele Grüße

Sascha

Re: Modularisierung

Verfasst: Montag 4. März 2013, 14:43
von Rekrul

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!

Re: Modularisierung

Verfasst: Montag 4. März 2013, 14:45
von sashs
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

Re: Modularisierung

Verfasst: Montag 4. März 2013, 14:49
von Gary123456
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?

Re: Modularisierung

Verfasst: Montag 4. März 2013, 15:08
von kevind
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'

Re: Modularisierung

Verfasst: Montag 4. März 2013, 15:09
von Rekrul
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

Re: Modularisierung

Verfasst: Montag 4. März 2013, 15:14
von Gary123456
OK hätte ich auch selbst drauf kommen können. Trotzdem Danke!

Re: Modularisierung

Verfasst: Montag 4. März 2013, 15:17
von BlackJack
@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.