Как узнать путь запуска скрипта в Python? - PullRequest
4 голосов
/ 14 февраля 2010

My script.py создает временный файл в том же каталоге, что и скрипт.

При запуске:

python script.py

работает просто файл

но он не работает при запуске:

python /path/to/script.py

Это потому, что я использую относительный путь к моему временному файлу в файле script.py, а не абсолютный. Проблема в том, что я не знаю, по какому пути он будет работать, поэтому мне нужен способ узнать это динамически.

Как насчет?

os.path.abspath(os.path.dirname(__file__))

Ответы [ 3 ]

8 голосов
/ 14 февраля 2010

За великого Погружение в Python :

import sys, os

print 'sys.argv[0] =', sys.argv[0]             1
pathname = os.path.dirname(sys.argv[0])        2
print 'path =', pathname
print 'full path =', os.path.abspath(pathname)
7 голосов
/ 14 февраля 2010

Два текущих ответа отражают неоднозначность вашего вопроса.

Когда вы запустите python /path/to/script.py, где вы хотите ваш временный файл? В текущем каталоге (./tempfile.txt) или в /path/to/tempfile.txt?

Если первое, вы можете просто использовать относительный путь (или, для странных и непонятных целей, получить абсолютный путь, эквивалентный текущему каталогу, как предлагает @Desintegr, с os.getcwd).

Если последнее, вы можете точно узнать, как скрипт вызывался с sys.argv[0], как предлагает @Jonathan, и манипулировать этим путем с помощью функций в os.path (конечно, вы также можете применить эти функции к тому, что os.getcwd возвращает, если применяется первый случай), или работает с os.path.dirname(__file__) и т.п. (последний необходим, если вы хотите, чтобы это последнее поведение также выполнялось, когда скрипт импортируется как модуль, а не только когда он запускается как основной скрипт).

0 голосов
/ 14 февраля 2010

Вы можете использовать метод os.getcwd () , чтобы узнать текущий рабочий каталог.

Return a string representing the current working directory. Availability: Unix, Windows.

Вы можете использовать метод os.chdir (путь) , чтобы изменить текущий рабочий каталог.

Change the current working directory to path. Availability: Unix, Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...