6

Получить имя текущего скрипта в Python

1

Я пытаюсь получить имя выполняемого в данный момент Python-скрипта. У меня есть скрипт с названием foo.py, и я хотел бы сделать что-то вроде этого, чтобы получить имя скрипта:

print(Scriptname)

Как правильно получить имя текущего скрипта в Python?

5 ответ(ов)

2

Этот код выведет foo.py при запуске команды python foo.py, dir/foo.py при python dir/foo.py и так далее. Это первый аргумент, передаваемый интерпретатору Python. (Обратите внимание, что после использования py2exe он будет выводить foo.exe.)

0

Выше приведенные ответы хороши, но я нашел этот метод более эффективным, используя приведенные результаты. Он возвращает имя файла скрипта, а не путь к нему.

import sys    
import os    
file_name = os.path.basename(sys.argv[0])
0

Для современных версий Python (3.4 и выше) более идиоматичным будет использование Path(__file__).name. Также Path(__file__).stem позволяет получить имя скрипта без расширения .py.

0

На Python 3.5 и выше вы можете просто использовать следующий код для получения имени файла без расширения:

from pathlib import Path
Path(__file__).stem

Дополнительную информацию вы можете найти здесь: https://docs.python.org/3.5/library/pathlib.html#pathlib.PurePath.stem

Например, если у вас есть файл в домашнем каталоге с именем test.py, содержащий следующий код:

from pathlib import Path

print(Path(__file__).stem)
print(__file__)

При запуске этого скрипта вы получите следующий вывод:

>>> python3.6 test.py
test
test.py

Таким образом, Path(__file__).stem возвращает имя файла без расширения, а __file__ возвращает полное имя файла с его расширением.

0

Если вы выполняете необычный импорт (например, это файл с опциями), попробуйте следующий код:

import inspect
print(inspect.getfile(inspect.currentframe()))

Обратите внимание, что этот код вернет абсолютный путь к файлу.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь