Всякий раз, когда я запускаю скрипт, нажимая на него в окне диспетчера файлов, он запускается с моим домашним каталогом, поскольку это рабочий каталог, а не каталог, в котором есть скрипт внутри него, где я нажимаю.
Это боль, если код нуждается в доступе к файлам в фактическом каталоге, где находится скрипт.
Есть ли способ изменить это поведение?
Пример:
foo.py
находится в папке /home/phil/src/python
foo.data
, также там находится и читается foo.py
во время исполнения.
Если я открою терминал в этой папке и запустим скрипт , он работает с /home/phil/src/python
в качестве рабочего каталога, и он успешно находит и открывает foo.data
Однако, если я открою свой файловый менеджер (pcman в моем случае Lubuntu), перейдите к /home/phil/src/python
и дважды щелкните foo.py
, чтобы запустить его, он будет работать с /home/phil
в качестве рабочего каталога. Он не найдет foo.data
, и он потерпит неудачу.
После того, как это произошло, похоже, это также происходит с Nautilus.
Для скриптов bash вы можете запустить скрипт с помощью
cd "$(dirname "$0")"
или более сложных и безопасных версий этого. Вероятно, в python вы можете сделать что-то подобное (я не знаю python), или вы можете обернуть скрипт сценарием bash.