Seite 1 von 2
Re: String: Ersetzen von Backslash als Slash
Verfasst: Dienstag 12. Juni 2012, 15:01
von /me
rumpie hat geschrieben:Code: Alles auswählen
#!/usr/bin/python
import _winreg, ConfigParser, subprocess, os
if __name__ == '__main__':
InstallPath = "c:\Program Files"
RelExe = "7-Zip\7zFM.exe"
Exe1 = os.path.join(InstallPath, RelExe)
print Exe1
subprocess.Popen([Exe1])
Arghhhhh!
Hier liest du die Strings ja auch nicht aus einer Datei oder meinetwegen aus der Registry sondern definierst sie im Sourcecode. Hier müsstest du die Strings natürlich entweder als "7-Zip\\7zFM.exe" oder r"7-Zip\7zFM.exe" definieren um im daraus resultierenden String genau einen Backslash zu haben.
Schau dir bitte an wie die Repräsentation der Strings aussieht:
Code: Alles auswählen
>>> r"7-Zip\7zFM.exe"
'7-Zip\\7zFM.exe'
>>> "7-Zip\7zFM.exe"
'7-Zip\x07zFM.exe'
Im zweiten String steht jetzt nicht die Zeichensequenz "\ x 0 7". Das ist nur die Darstellung des einen Zeichens das dort steht und das keine druckbare Entsprechung hat, nämlich das Zeichen mit dem ASCII-Code 7.
Re: String: Ersetzen von Backslash als Slash
Verfasst: Dienstag 12. Juni 2012, 15:34
von rumpie
/me hat geschrieben:rumpie hat geschrieben:Code: Alles auswählen
#!/usr/bin/python
import _winreg, ConfigParser, subprocess, os
if __name__ == '__main__':
InstallPath = "c:\Program Files"
RelExe = "7-Zip\7zFM.exe"
Exe1 = os.path.join(InstallPath, RelExe)
print Exe1
subprocess.Popen([Exe1])
Arghhhhh!
Hier liest du die Strings ja auch nicht aus einer Datei oder meinetwegen aus der Registry sondern definierst sie im Sourcecode. Hier müsstest du die Strings natürlich entweder als "7-Zip\\7zFM.exe" oder r"7-Zip\7zFM.exe" definieren um im daraus resultierenden String genau einen Backslash zu haben.
Schau dir bitte an wie die Repräsentation der Strings aussieht:
Code: Alles auswählen
>>> r"7-Zip\7zFM.exe"
'7-Zip\\7zFM.exe'
>>> "7-Zip\7zFM.exe"
'7-Zip\x07zFM.exe'
Im zweiten String steht jetzt nicht die Zeichensequenz "\ x 0 7". Das ist nur die Darstellung des einen Zeichens das dort steht und das keine druckbare Entsprechung hat, nämlich das Zeichen mit dem ASCII-Code 7.
Ja, ist hier nur als (schlechtes) Beispiel drin. Ich lese beide Strings aus der Registry bzw. einer ini-Datei - siehe obere Antwort.
Ich wollte damit nur anzeigen, wie ich es lösen konnte, nämlich meinen Eintrag (den in der ini-Datei) konnte ich anpassen, der in der Registry mit den Backslash als Pfadtrenner drin muss ich nehmen wie er ist.
Das Problem (was du auch noch mal aufzeigtest) habe ich verstanden gehabt...
Re: String: Ersetzen von Backslash als Slash
Verfasst: Dienstag 12. Juni 2012, 15:48
von Leonidas
rumpie hat geschrieben:Ja, ist hier nur als (schlechtes) Beispiel drin. Ich lese beide Strings aus der Registry bzw. einer ini-Datei - siehe obere Antwort.
In dem Fall sollte das "Problem" niemals auftauchen.
Re: String: Ersetzen von Backslash als Slash
Verfasst: Dienstag 12. Juni 2012, 15:53
von cofi
rumpie hat geschrieben:Ja, ist hier nur als (schlechtes) Beispiel drin. Ich lese beide Strings aus der Registry bzw. einer ini-Datei - siehe obere Antwort.
Das einzige brauchbare Beispiel an der Stelle ist genau das zu tun. Schreibe die Strings in eine Datei, lies sie wieder aus und versuch deinen Code _damit_.
rumpie hat geschrieben:Das Problem (was du auch noch mal aufzeigtest) habe ich verstanden gehabt...
Dem wuerde ich nicht zustimmen ...
Re: String: Ersetzen von Backslash als Slash
Verfasst: Dienstag 13. Oktober 2020, 08:33
von WE_Coder
Ich hatte dieses Problem mit filedialog.askdirctory() und dem Backslash auch. Die Lösung ist aber eigentlich ganz einfach:
Code: Alles auswählen
>>> from tkinter import filedialog
>>> system_pfad = filedialog.askdirectory(title = "Ordner wählen")
>>> print(system_pfad)
C:/Windows/System
>>> pfad_neu = system_pfad.replace("/", "\\")
>>> print(pfad_neu)
C:\Windows\System
>>>
Über Sinn und Unsinn dieser Methode will ich gar nicht diskutoeren. Bei mit hat das so wunderbar funktioniert

Re: String: Ersetzen von Backslash als Slash
Verfasst: Dienstag 13. Oktober 2020, 08:52
von __deets__
Und das ist dir so wichtig, das du dafür einen 8 Jahre alten Thread exhumierest?!
Re: String: Ersetzen von Backslash als Slash
Verfasst: Dienstag 13. Oktober 2020, 11:45
von __blackjack__
Und das ist auch ein ganz anderes ”Problem”. Letztlich ist das überhaupt kein Problem, weil die Windows-API auch den / als Pfadtrenner akzeptiert.