2

我正在编写一个 python 程序,无论它是在 windows 命令提示符还是 windows powershell 上运行,我都想以不同的方式运行。我想知道是否有办法确定python在程序中运行的环境。

提前致谢!

4

3 回答 3

1

首先使用此代码获取您的父进程 ID。然后调用:

if ("powershell.exe" in os.popen("tasklist /fi \"PID eq %d\"" % parentPID).read()) {
    # We're a child of powershell!!
    ...
}

虽然说实话,如果你是由 powershell 运行的,那么以不同的方式执行是有点奇怪的。您应该认真考虑为什么要这样做,并评估您是否在做一些不必要的事情。

如果您想要平台(这在您的最后陈述中有所暗示),平台模块通常会告诉您您想知道的内容。

>> import platform
>> platform.architechture()
('64bit', 'WindowsPE')

请注意,从建议您用于 Mac 以确定 64 位与 32 位的文档中。is_64bits = sys.maxsize > 2**32

于 2013-04-25T16:31:48.143 回答
0

在调用脚本时,您应该认真地添加另一个参数。

在脚本内部时,该sys.args变量会为您提供传递给脚本的所有参数(首先始终是脚本的名称)。

还有库optparse可以帮助您完成工作.....

你正在做的不是一个好的做法:P恰恰相反:)无论如何,不​​要太努力,我的意思是我不知道你想要做什么,但这听起来像是一个危险的想法。

于 2013-04-25T17:42:27.380 回答
0

您可以尝试一种解决方案。您可以从 Python 代码中调用一些 powershell 命令作为 Write-Host(cmd 中的 echo 等效项)并获取调用结果。如果失败则不是 PowerShell。(我现在无法测试)。

于 2013-04-25T16:37:21.120 回答