如何检测 Python 是不是在 Git Bash 终端或 Windows cmd 中运行?

Posted

技术标签:

【中文标题】如何检测 Python 是不是在 Git Bash 终端或 Windows cmd 中运行?【英文标题】:How to detect if Python is running in Git Bash terminal, or Windows cmd?如何检测 Python 是否在 Git Bash 终端或 Windows cmd 中运行? 【发布时间】:2021-12-04 15:34:59 【问题描述】:

我想让我的 Python 脚本能够检测它是在 Git Bash 终端还是在 Windows cmd 命令行界面中执行的。例如,我正在尝试编写一个函数来清除终端(无论它是哪个终端),例如如果在 Git Bash 中,则回显 clear 命令,如果在 cmd 中,则回显 cls

我尝试使用 sys.platform 来检测这一点,但无论它运行在哪种类型的终端中,它都会返回 win32

【问题讨论】:

尝试使用ospsutil 模块。例如,import os, psutil # Get the parent process name. pprocName = psutil.Process(os.getppid()).name() 另外,请查看geeksforgeeks.org/clear-screen-python 谢谢,您的示例适用于我的特定用例。 酷,我很乐意提供帮助。您希望我将其添加为答案吗? 是的,去吧。 【参考方案1】:

请尝试使用ospsutil 模块。

例如,

import os, psutil  # Get the parent process name. 
pprocName = psutil.Process(os.getppid()).name()

然后你可以根据 shell 来设置你的逻辑。

另外,您可能需要查看https://www.geeksforgeeks.org/clear-screen-python/

【讨论】:

这行得通。在 Windows x64 环境中使用命令提示符、Powershell 和 Git Bash 进行了测试。输出将分别返回 cmd.exe、powershell.exe 或 winpty-agent.exe。此输出与条件语句中 sys.platform 模块的输出相结合,将使用户能够发出有效地与 shell 无关的终端命令,如果需要,也可以与操作系统无关。【参考方案2】:

我不相信您的要求是可能的,但有几个答案here 显示了您可以使用正确类型的清除所做的所有检测。通常,最好是自己制作窗口或不清除屏幕,遗憾的是。

【讨论】:

以上是关于如何检测 Python 是不是在 Git Bash 终端或 Windows cmd 中运行?的主要内容,如果未能解决你的问题,请参考以下文章

考虑到它的参数,如何检测bash脚本是不是已经在运行[重复]

Git bash如何调用不同版本的python

Git bash如何调用不同版本的python

如何在 Windows 的 Git Bash 中设置别名?

如何在mac上装gitbash

如何使用适用于 Windows 的 Git 更改 Git Bash 中的目录?