我正在编写一个我希望以不同方式运行的python程序,无论它是在windows命令提示符还是windows powershell上运行。我想知道是否有办法确定python在程序中运行的环境。
提前致谢!
答案 0 :(得分:1)
首先使用this code来获取您的父进程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')
请注意,从docs建议您使用is_64bits = sys.maxsize > 2**32
用于Mac来确定64位与32位。
答案 1 :(得分:0)
您可以尝试一种解决方案。您可以从Python代码中将一些powershell命令称为Write-Host(cmd中的echo equivalent)并获取调用结果。如果失败则不是PowerShell。 (我现在无法测试。)
答案 2 :(得分:0)
在调用脚本时,你应该认真地添加另一个参数。
当在脚本内部时,sys.args
变量会为您提供传递给脚本的所有参数(首先始终是脚本的名称)。
还有图书馆optparse可以帮助你完成工作......
你所做的不是一个好习惯:P恰恰相反:)不管怎么说,不要太用力,我的意思是我不知道你要做什么,但听起来像是一个危险的想法。