Hi,
also irgendwie verstehe ich das net mit den string und den sonderzeichen nicht, also ich versuche ne datei zu verschiebe:
def move_to(a_file, target):
r_dir = a_file.encode('string-escape')
r_target = target.encode('string-escape')
shutil.move(a_file, target)
Aber irgendwie geht das mit dem encoder doch nicht. Denn ohne encoder:
C:\Usersupp\Desktopib.naps.cas_ROI\pom.xml
Und dann mit (b.encode('string-escape')
C:\\Users\x0cupp\\Desktop\x07ib.naps.cas_ROI\\pom.xml
Also das mit r (r "lbblblbl\blakjkjdalkj") hab ich schon gesehen, aber gibts das denn nicht auch fuer variablen?? also eine string_var in eine raw_string_var umwandeln?
Verstehe raw_string nicht
Nein das gibt's nicht weil es das gar nicht geben kann. "raw" Zeichenketten sind nur eine Möglichkeit literale Zeichenketten in *Quelltext* ein zu geben. Im Programm selbst gibt es nur eine Art von Zeichenketten, denen man nicht mehr ansehen kann, ob sie mal eine "normale" oder eine "raw" Zeichenkette im Quelltext war.
Wo kommen die Zeichen- oder besser Byteketten denn her? Da sind Steuerzeichen drin, die *ziemlich* ungewöhnlich für Dateinamen sind, zum Beispiel '\x07' ist der ASCII-Code für die "Klingel" -- beim Computer im Terminal in der Regel durch ein Piepsen umgesetzt.
Wo kommen die Zeichen- oder besser Byteketten denn her? Da sind Steuerzeichen drin, die *ziemlich* ungewöhnlich für Dateinamen sind, zum Beispiel '\x07' ist der ASCII-Code für die "Klingel" -- beim Computer im Terminal in der Regel durch ein Piepsen umgesetzt.
Hi,
also meine path sieht so aus:
"C:\Users\fupp\Desktop\aib.naps.cas_ROI"
wenn ich zb folgendes versuche, gehts net:
chdir("C:\Users\fupp\Desktop\aib.naps.cas_ROI")
Wenn ich dann aber
chdir(r"C:\Users\thul\Desktop\aib.naps.cas_ROI")
verwenden gehts.
Die sach ist nunmal die das ich den path von nem andern program bekomme also r nicht verwenden kann.
also meine path sieht so aus:
"C:\Users\fupp\Desktop\aib.naps.cas_ROI"
wenn ich zb folgendes versuche, gehts net:
chdir("C:\Users\fupp\Desktop\aib.naps.cas_ROI")
Wenn ich dann aber
chdir(r"C:\Users\thul\Desktop\aib.naps.cas_ROI")
verwenden gehts.
Die sach ist nunmal die das ich den path von nem andern program bekomme also r nicht verwenden kann.
Wie schon gesagt, das 'r' vor Zeichenketten ist nur interessant wenn Du das vor literalen Zeichenketten in Deinem Quelltext schreibst. Wenn die Daten erst einmal im laufenden Programm sind, dann gibt es diese Unterscheidung nicht mehr.
Es sieht also so aus, als wenn Du von dem anderen Programm schon kaputte Pfadangaben bekommst. Das sollte man also *dort* reparieren.
Es sieht also so aus, als wenn Du von dem anderen Programm schon kaputte Pfadangaben bekommst. Das sollte man also *dort* reparieren.
Ok, damit ich das auch richtig verstanden habe, wenn ich mal soweit bin und dem user nen dialogbox (Python) anbiete in die er dann nen path eingeben kann und ich dann diesen Path aus der Textbox auslese und an folgend funktion übergeben würde, würde das funktionieren!??!?
*bitte sag ja*
Code: Alles auswählen
from os import *
import shutil
def move_to(a_file, target):
right_dir = a_file.encode('string-escape')
right_target = target.encode('string-escape')
shutil.move(a_file, target)
Das kommt auf die Definition von "funktionieren" an. Ich würde aber mal *nein* sagen, weil solche Pfadangaben wohl nicht als normal anzusehen sind. Statt 'string-escape' solltest Du vielleicht besser eine Kodierung nehmen, die vom System auch *wirklich* für Dateinamen verwendet wird. Schau Dir mal `sys.getfilesystemencoding()` an.
Und dann lerne unbedingt was es mit Unicode und Kodierungen auf sich hat.
Und dann lerne unbedingt was es mit Unicode und Kodierungen auf sich hat.
Für mich sieht das so aus, daß eine Verdopplung der "" dich weiterbringen könnte. Aber vielleicht bin ich jetzt auch völlig auf dem falschen Dampfer ...fuppes hat geschrieben:Hi,
also meine path sieht so aus:
"C:\Users\fupp\Desktop\aib.naps.cas_ROI"
wenn ich zb folgendes versuche, gehts net:
chdir("C:\Users\fupp\Desktop\aib.naps.cas_ROI")
Wenn ich dann aber
chdir(r"C:\Users\thul\Desktop\aib.naps.cas_ROI")
verwenden gehts.
Die sach ist nunmal die das ich den path von nem andern program bekomme also r nicht verwenden kann.
Dafür sorgt das "r":Jan-Peer hat geschrieben:Für mich sieht das so aus, daß eine Verdopplung der "" dich weiterbringen könnte. Aber vielleicht bin ich jetzt auch völlig auf dem falschen Dampfer ...
Code: Alles auswählen
>>> r"Mein\Pfad"
'Mein\\Pfad'
>>> r"Mein\nString"
'Mein\\nString'
>>> "Mein\\Pfad"
'Mein\\Pfad'
>>> "Mein\nString"
'Mein\nString'
>>>
... er kann kein r benutzen und er kann auch keine "Verdoppelung" benutzen, da er allem anschein nach von irgendwoher einen String übergeben bekommt der, wie Blackjack schon sagte, kaputt ist. Das Problem muss also "dort" gelöst werden.