• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python - ścieżka do katalogu aktualnego skryptu

VPS Starter Arubacloud
0 głosów
1,202 wizyt
pytanie zadane 2 lutego 2019 w Python przez Kuba Jakubowski Gaduła (3,550 p.)

Jak otrzymać ścieżkę do katalogu aktualnie wykonywanego skryptu. Dotychczas używałem tego:

os.path.dirname(__file__)

Jednak kiedy uruchomię mój skrypt innym skryptem używając np. os.startfile. Otrzymuję błędną ścieżkę. Zależy mi na rozwiązaniu który będzie działało zarówno przy plikach .py oraz .exe "zfreezowanych" przez PyInstaller'a z użyciem atrybutu --onefile.

komentarz 2 lutego 2019 przez Secrus Nałogowiec (32,880 p.)
a może działanie skryptu który próbujesz wywołać zamknąć w funkcji i zaimportować do skryptu wywołującego?

1 odpowiedź

+1 głos
odpowiedź 2 lutego 2019 przez Arkadiusz Sikorski Pasjonat (20,160 p.)
os.path.abspath(__file__) 
os.path.dirname(os.path.abspath(__file__)) 

Pierwsze zwraca ścieżkę absolutną pliku, drugie - ścieżkę absolutną folderu zawierającego obecny plik.

komentarz 2 lutego 2019 przez Kuba Jakubowski Gaduła (3,550 p.)
edycja 3 lutego 2019 przez Kuba Jakubowski

Dzięki, działa

komentarz 2 lutego 2019 przez Kuba Jakubowski Gaduła (3,550 p.)
Wróć, jednak nie działa. Nadal przy otwieraniu "zfreezowanego" exe'ca innym skryptem jest pokazywana ścieżka do skryptu, a nie do exe'ca.
1
komentarz 3 lutego 2019 przez Arkadiusz Sikorski Pasjonat (20,160 p.)

Jeśli używasz pyinstallera, to może zobacz tutaj.

komentarz 3 lutego 2019 przez Kuba Jakubowski Gaduła (3,550 p.)

Znalazłem rozwiązanie:

import sys, os

if getattr(sys, 'frozen', False):
    dir = os.path.dirname(sys.executable)
else:
    dir = os.path.dirname(__file__)

Sprawdzamy czy program jest zamrożony, jeśli tak bierzemy folder z sys.executable, w przeciwnym razie aktualny folder wyciągamy z __file__.

1
komentarz 4 lutego 2019 przez Arkadiusz Sikorski Pasjonat (20,160 p.)
Nie ma za co :)

Podobne pytania

0 głosów
1 odpowiedź 289 wizyt
+1 głos
0 odpowiedzi 198 wizyt
pytanie zadane 3 sierpnia 2021 w Python przez Pico Obywatel (1,330 p.)
+1 głos
2 odpowiedzi 593 wizyt
pytanie zadane 10 grudnia 2018 w Python przez Milesq Nałogowiec (32,020 p.)

92,452 zapytań

141,262 odpowiedzi

319,077 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...