Я хотел бы посмотреть, как лучше определить текущий каталог скриптов в python?
Я обнаружил, что из-за множества способов вызова кода на Python трудно найти хорошее решение.
Вот некоторые проблемы:
__file__не определен , если скрипт выполняется сexec,execfile__module__определяется только в модулях
Случаи использования:
./myfile.pypython myfile.py./somedir/myfile.pypython somedir/myfile.pyexecfile('myfile.py')(из другого скрипта, который может находиться в другом каталоге и может иметь другой текущий каталог.
Я знаю, что не существует идеального решения, но я ищу лучший подход, который решает большинство случаев.
Наиболее часто используется такой подход, os.path.dirname(os.path.abspath(__file__))но он действительно не работает, если вы выполняете скрипт из другого exec().
Предупреждение
Любое решение, которое использует текущую директорию, потерпит неудачу, это может отличаться в зависимости от того, как вызывается скрипт, или его можно изменить внутри запущенного скрипта.
pathlibРешение Рона Каляна, если вы используете Python 3.4 или выше: stackoverflow.com/a/48931294/1011724
python myfile.pyиз оболочки это работает, но оба :!python %и :!python myfile.pyизнутри vim терпят неудачу с системой не удается найти указанный путь. Это довольно раздражает. Кто-нибудь может прокомментировать причину этого и возможные обходные пути?