Каждый раз, когда я выполняю сценарий путем нажатия на него в окне файлового менеджера, это выполняется с моим корневым каталогом, поскольку это работает каталог, не каталог, который имеет сценарий в нем, где я нажимаю.
Это - боль, если код должен получить доступ к файлам в фактическом каталоге, где сценарий расположен.
Существует ли способ изменить это поведение?
Пример:
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
и это перестанет работать.
После поиска с помощью Google этого немного кажется, что это также происходит с Наутилусом.
Для сценариев удара можно запустить сценарий с
cd "$(dirname "$0")"
или более сложные и более безопасные версии этого. Вероятно, в Python можно сделать что-то подобное (я не знаю Python), или можно перенести сценарий со сценарием удара.