module пишем - Как определить, импортируется ли скрипт Python как модуль или запускается как скрипт?




на зачем (2)

из docs Python:

Когда вы запускаете модуль Python с

python fibo.py

код в модуле будет выполнен так же, как если бы вы его импортировали, но с __name__ установленным в "__main__" . Это означает, что, добавив этот код в конец вашего модуля:

if __name__ == '__main__':
    # Running as a script

Вы можете сделать файл пригодным для использования в качестве скрипта, а также в качестве импортируемого модуля, потому что код, который анализирует командную строку, запускается только в том случае, если модуль выполняется как «основной» файл

Вопрос довольно простой, но не найден в результате поиска. Как определить в скрипте Python, импортируется ли этот скрипт как модуль или запускается как скрипт? Есть ли вообще разница в питоне?

Проблема в том, что я хочу оценивать параметры командной строки только в том случае, если они запускаются как скрипт, а не в том случае, если модуль импортируется только для использования в другом скрипте. (Я хочу иметь возможность использовать один сценарий как библиотеку, так и программу.) Я боюсь, что простой способ - это создать lib и второй сценарий, который ее использует, но я хотел бы иметь второй вариант для небольшого инструмента. / LIBS.


Я лично рекомендовал бы использовать os.path.isdir() для тестирования вместо os.path.exists() .

>>> os.path.exists('/tmp/dirname')
True
>>> os.path.exists('/tmp/dirname/filename.etc')
True
>>> os.path.isdir('/tmp/dirname/filename.etc')
False
>>> os.path.isdir('/tmp/fakedirname')
False

Если у вас есть:

>>> dir = raw_input(":: ")

И глупый пользовательский ввод:

:: /tmp/dirname/filename.etc

... В конце вы получите каталог с именем filename.etc когда вы передадите этот аргумент os.makedirs() если вы проверите с os.path.exists() .







python module