#python #python-3.x #windows #powershell #cmd
#python #python-3.x #Windows #powershell #cmd
Вопрос:
Я пишу некоторый код на Python, который я, наконец, упаковываю в исполняемый файл ( myexec.exe
) pyinstaller
. Это программа командной строки, которая может быть запущена
- из оболочки (
cmd
илиpowershell
выполняется, и запускается изнутри пользователяmyexec.exe
) - или из другой программы (в частности, AutoHotkey), как
myexec.exe
Я хотел бы иметь возможность определить, в каком случае я нахожусь, чтобы завершить программу с input()
помощью или нет — идея заключается в том, что если она запускается из оболочки, она может немедленно завершиться (вывод будет виден в оболочке), а если нет, то окно должно оставаться для пользователя посмотрите выходные данные (а затем нажмите Enterдля выхода).
Есть ли способ проверить эти случаи из Python?
Комментарии:
1. вы можете попробовать
getattr(sys, 'frozen', False)
? это было бы верно, если файл заморожен (exe), исходя из этого, вы можете написать ветвление для незамороженного или замороженного2. @python_user: это всегда будет исполняемый файл, просто запущенный по-разному (я обновил вопрос, чтобы сделать его более понятным)
3. @WoJ: На какую оболочку вы ссылаетесь? Оболочка POSIX? Маловероятно, что вы будете использовать его в Windows.
4. Пожалуйста, пометьте свой вопрос с помощью powershell или cmd , в зависимости от того, какой из них вы хотите использовать.
5. Просто добавьте некоторый флаг командной строки (например, -ah ) в скрипт AutoHotkey и проверьте, существует ли этот ключ в вашем приложении с помощью
sys.argv
Ответ №1:
Просто добавьте аргумент командной строки при запуске из AutoHotkey, и вы можете проверить этот аргумент внутри программы следующим образом:
import sys
if '--from_script' in sys.argv:
print('launched from script')