Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Wangarad 17. 08. 2019, 11:33:01

Název: Python 3 os.path.join vracia zvlastnu hodnotu
Přispěvatel: Wangarad 17. 08. 2019, 11:33:01
Zdravim.
Neviem co je zle na tomto ale os.path.join mi vracia v 2 pripadoch spravnu hodnotu v tretom vsak osekava string.
Kód: [Vybrat]
output_path = os.path.dirname(__file__)
icons = os.path.join(output_path, 'data\g1.ico')
image_pause = os.path.join(output_path, 'data\pause.png')
image_start = os.path.join(output_path, 'data\start.png')
image_tracking_button = os.path.join(output_path, 'data\racking.png')
print (image_pause)
print (image_start)
print (image_tracking_button)

vracia toto
C:\Users\x\data\pause.png
C:\Users\x\data\start.png
C:\Users\x\dataacking.pn g

preco? vsetko je to v jednom subore volane na zaciatku scriptu. Python 3.7 windows 10
Název: Re:Python 3 os.path.join vracia zvlastnu hodnotu
Přispěvatel: Wavelet 17. 08. 2019, 11:49:54
Všimni si, že v posledním řetezi máš 'data\racking.png'), kde '\r' character je tzv. "carriage return".
Koukám že jsi na Widlích viz ty zpětný lomítka. Doporučím ti použít místo os.path moderní Pathlib https://docs.python.org/3/library/pathlib.html, která za tebe řeší např. formát cesty. Pokud chceš rychlý řešení, tak escapuj '\\r'.
Název: Re:Python 3 os.path.join vracia zvlastnu hodnotu
Přispěvatel: Wavelet 17. 08. 2019, 11:59:09
Koukni na "Python special characters" ať předejdeš dalším problémům. Další možnost je použít raw string, takže prefixuješ pomocí r: `os.path.join(output_path, r'data\racking.png')`.
Název: Re:Python 3 os.path.join vracia zvlastnu hodnotu
Přispěvatel: Wangarad 17. 08. 2019, 12:51:23
Dakujem za odpovede. Ten specialny charakter som nepostrehol.
Pouzil som riesenie s r' este raz dakujem
Název: Re:Python 3 os.path.join vracia zvlastnu hodnotu
Přispěvatel: ByCzech 17. 08. 2019, 15:12:36
Dakujem za odpovede. Ten specialny charakter som nepostrehol.
Pouzil som riesenie s r' este raz dakujem

Další možností je klasické zdvojení zpětného lomítka
Název: Re:Python 3 os.path.join vracia zvlastnu hodnotu
Přispěvatel: tecka 17. 08. 2019, 15:12:51
Já bych ještě podotknul, že join v takovém případě moc nemá smysl. Spíš bych to viděl takhle:
Kód: [Vybrat]
icons = os.path.join(output_path, 'data', 'g1.ico')
Název: Re:Python 3 os.path.join vracia zvlastnu hodnotu
Přispěvatel: Wavelet 17. 08. 2019, 16:07:08
Já bych ještě podotknul, že join v takovém případě moc nemá smysl. Spíš bych to viděl takhle:
Kód: [Vybrat]
icons = os.path.join(output_path, 'data', 'g1.ico')
Jo, to je zdaleka nejlepší řešení.
Název: Re:Python 3 os.path.join vracia zvlastnu hodnotu
Přispěvatel: gill 17. 08. 2019, 20:48:00
Jo, to je zdaleka nejlepší řešení.

nejlepší je použít pathlib, jak jste radil výše.