如何检测Python脚本是否正在“Windows终端”中运行

6tr1vspr  于 2023-01-24  发布在  Python
关注(0)|答案(3)|浏览(233)

我需要检查Python脚本是否在Windows Terminal中运行(而不是CMD.exe、Powershell、bash等)。
如何才能做到这一点?

lf5gs5x2

lf5gs5x21#

我可以提供这样的方法:

is_windows_terminal = sys.platform == "win32" and os.environ.get("WT_SESSION")

但也许有更干净的解决办法...

yftpprvb

yftpprvb2#

您可以获取运行/spawned的进程的父进程ID(PID),然后运行您的python脚本并在Windows CMD的任务列表中搜索,查看此pid属于谁:
在python脚本中添加以下行

import psutil
my_father_pid = str(psutil.Process().ppid())
print my_father_pid   # or print(my_father_pid) in python3

现在在任务列表中搜索您已获取的'my_father_pid':

tasklist /v  | findstr "<my_father_pid>"
dnph8jn4

dnph8jn43#

我已经为这个问题创建了一个包:https://pypi.org/project/AssertWT/

import assertwt
assertwt.is_wt()  # True,False

is_wt方法的源代码可以在github上找到

相关问题