Powiedzmy, że masz moduł, który zawierautworzyć ścieżkę pliku "zawsze względem bieżącego modułu"?
myfile = open('test.txt', 'r')
I „test.txt” plik jest w tym samym folderze. Jeśli uruchomisz moduł, plik zostanie pomyślnie otwarty. Teraz możemy powiedzieć, że importujesz ten moduł z innego, który znajduje się w innym folderze. Plik nie będzie przeszukiwany w tym samym folderze co moduł, w którym znajduje się ten kod. Jak zatem najpierw uczynić pliki wyszukiwania modułu ścieżkami względnymi w tym samym folderze? Istnieją różne rozwiązania, używając "__file__
" lub "os.getcwd()
", ale mam nadzieję, że istnieje bardziej przejrzysty sposób, taki sam specjalny znak w ciągu, który przekazujesz do open() lub file().
czym problem z 'os.getcwd()'? – cfedermann
'os.getcwd()' zwraca ścieżkę pierwszego modułu, który zaimportował ten moduł lub zaimportował inny, który go zaimportował. Pierwszy moduł może znajdować się w wielu katalogach w górę lub w dół. Tak więc nie wydaje się zbyt elegancko wpisywać 'os.getcwd() + 'coś/coś/jeszcze/else/finallyhere'' –
Cóż, następnie wypróbuj proponowaną odpowiedź' sys.modules' poniżej :) – cfedermann