Python 3 os.path.join vracia zvlastnu hodnotu

Python 3 os.path.join vracia zvlastnu hodnotu
« kdy: 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


Re:Python 3 os.path.join vracia zvlastnu hodnotu
« Odpověď #1 kdy: 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'.
« Poslední změna: 17. 08. 2019, 11:55:18 od uetoyo »

Re:Python 3 os.path.join vracia zvlastnu hodnotu
« Odpověď #2 kdy: 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')`.

Re:Python 3 os.path.join vracia zvlastnu hodnotu
« Odpověď #3 kdy: 17. 08. 2019, 12:51:23 »
Dakujem za odpovede. Ten specialny charakter som nepostrehol.
Pouzil som riesenie s r' este raz dakujem

ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:Python 3 os.path.join vracia zvlastnu hodnotu
« Odpověď #4 kdy: 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


tecka

  • ***
  • 138
    • Zobrazit profil
    • E-mail
Re:Python 3 os.path.join vracia zvlastnu hodnotu
« Odpověď #5 kdy: 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')

Re:Python 3 os.path.join vracia zvlastnu hodnotu
« Odpověď #6 kdy: 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í.

gill

  • ****
  • 270
    • Zobrazit profil
    • E-mail
Re:Python 3 os.path.join vracia zvlastnu hodnotu
« Odpověď #7 kdy: 17. 08. 2019, 20:48:00 »
Jo, to je zdaleka nejlepší řešení.

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