2013-04-25 70 views
2

我在写一个python程序,我想以不同的方式运行,无论它运行在Windows命令提示符还是Windows PowerShell中。我想知道是否有一种方法来确定在程序中运行的环境python。确定环境python运行在

在此先感谢!

+0

那么,有一个配方[这里](http://code.activestate.com/recipes/578133-get-parent-process-pid-win32/)来获得父进程ID,你应该能够适应获取父进程名称,但它可能不是一个好主意,使代码的行为依赖于启动它的shell程序。您希望程序以何种方式运行? – Aya 2013-04-25 16:42:19

回答

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位VS 32位。

0

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

0

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

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

还有图书馆optparse它可以帮助您与工作.....

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