[英]Determine calling executable in Python
我正在開發一個命令行應用程序,用於啟動具有預生成環境的子shell。
subprocess.call(subshell, shell=True, env=custom_environment)
它啟動subshell.bat
或subshell.sh
具體取決於當前的操作系統。
subshell = "subshell.bat" if os.name == "nt" else "subshell.sh"
但我希望支持Cygwin,Git Bash和其他在Windows上運行的人,他們每個人都需要獲得subshell.sh
,即使操作系統是Windows。
我想如果有一種方法可以確定Python進程的調用可執行文件,我可以反而檢查一下。
if calling_executable in ("bash", "sh"):
subshell = "subshell.sh"
elif calling_executable in ("cmd", "powershell"):
subshell = "subshell.bat"
else:
sys.exit() # unsupported shell
但我不知道該怎么做。 關於如何以不同方式進行的任何想法或建議?
用法示例
$ mytool --enter
Entering subshell for bash.exe
PS。 這個問題的措辭完全相同,但不涉及類似的問題,所以向它添加一個不相關的問題是不對的。
如果您不能僅僅依靠檢查操作系統,我建議添加命令行參數來指示版本。 它可能會使程序更“Pythonic”,因為“顯式優於隱式”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.