Bug ensure_dir?
Veröffentlicht: 22. Juli 2018 – 13:22 Uhr
Guten Morgen,
Wapt Version 1.5
Ich habe versucht, `setuphelper ensure_dir` in einem Paket zu verwenden, und bin dabei auf eine Fehlfunktion gestoßen:
Tatsächlich bewirkte der Befehl `ensure_dir('C:\Programmes\Ape')` nichts. Ich testete ihn in der Python-Konsole mit allen möglichen Kombinationen (z. B. mit einem "r" vor 'C:\Programmes...', mit `Programmes` statt `Programmes`...), aber nichts funktionierte.
Also habe ich mir den Code der Funktion angesehen und einige Tests direkt in Python durchgeführt:
(Das Verzeichnis C:\Program Files existiert natürlich nicht.)
In Test 1 sehen wir, dass die Funktion `isdir()` immer `True` zurückgibt, wenn `d` als `path.dirname` deklariert wird, selbst wenn der Pfad nicht existiert. (Die Antwort, die ich erhalte, wenn ich die Anzeige von `d` fordere, ist etwas überraschend, aber später sehen wir, dass dies nicht die Ursache des Problems zu sein scheint, obwohl es bereits problematisch ist.)
Im zweiten Test sehen wir, dass wir tatsächlich False erhalten, wenn d als Zeichenkette deklariert wird und der Pfad nicht existiert.
Im dritten Test sehen wir hingegen, dass wir ein True erhalten, wenn der Pfad existiert, während d als Zeichenkette deklariert wird.
Mir scheint daher, dass in ensure_dir(), anstatt zu verwenden
Sie sollten verwenden
Alternativ können Sie die Variable `filename` direkt verwenden, da `d` in diesem Fall scheinbar keinen besonderen Zweck erfüllt, außer vielleicht, um `filename` in eine Zeichenkette umzuwandeln:
Aufrichtig
E. Trezel
Wapt Version 1.5
Ich habe versucht, `setuphelper ensure_dir` in einem Paket zu verwenden, und bin dabei auf eine Fehlfunktion gestoßen:
Tatsächlich bewirkte der Befehl `ensure_dir('C:\Programmes\Ape')` nichts. Ich testete ihn in der Python-Konsole mit allen möglichen Kombinationen (z. B. mit einem "r" vor 'C:\Programmes...', mit `Programmes` statt `Programmes`...), aber nichts funktionierte.
Also habe ich mir den Code der Funktion angesehen und einige Tests direkt in Python durchgeführt:
(Das Verzeichnis C:\Program Files existiert natürlich nicht.)
Code: Alle auswählen
>>> ## Test 1 :
>>> d=path.dirname('C:\program rrr')
>>> d
'C:\\'
>>> path.isdir(d)
True
>>> ## Test 2 :
>>> d="C:\Program rrr"
>>> d
'C:\\Program rrr'
>>> path.isdir(d)
False
>>> ##Test 3 :
>>> d="C:\Program Files"
>>> d
'C:\\Program Files'
>>> path.isdir(d)
True
Im zweiten Test sehen wir, dass wir tatsächlich False erhalten, wenn d als Zeichenkette deklariert wird und der Pfad nicht existiert.
Im dritten Test sehen wir hingegen, dass wir ein True erhalten, wenn der Pfad existiert, während d als Zeichenkette deklariert wird.
Mir scheint daher, dass in ensure_dir(), anstatt zu verwenden
Code: Alle auswählen
d = os.path.dirname(filename)
Code: Alle auswählen
d = filename
Code: Alle auswählen
d = str(filename)
E. Trezel