0

有没有办法知道我从哪个应用程序运行 python 脚本?

我可以从多个来源运行 python,例如 Textmate、Sublime Text 2 或终端(我在 Mac OSX 上)。我怎么知道,究竟是哪个工具启动了当前的 python 应用程序。

我试过研究osandinspect模块,但找不到解决方案。

4

2 回答 2

1

您可以使用psutil以相当跨平台的方式执行此类操作:

import psutil
import os
my_process = psutil.Process(os.getpid())
parent = my_process.parent
print "Parent process name: " + parent.name

psutil文档中:

它目前支持 32 位和 64 位的 Linux、Windows、OSX 和 FreeBSD,并使用单一代码库提供从 2.4 到 3.3 的 Python 版本。

除了名称之外,您还可以获得可执行路径(如果您从选项列表中选择,这可能会更有用)以及调用它的完整命令行。您还可以获得运行该过程的用户名。有关参数及其可用平台的详细信息,请参阅psutil 类文档

顺便说一句,如果可能的话,我会构建您的代码,这样您就不必根据调用应用程序修改您的行为 - 最好让调用应用程序传入一个修改行为的参数共享代码。但是,我很欣赏有时其他问题优先于代码的清洁度,因此psutil应该使您能够按照您的要求进行操作。

于 2013-01-09T14:33:16.457 回答
0

如果您乐于保持特定于 unix,那么您可以使用os.getppid(). 如果您想将其转换回程序 id,您可以运行一个子进程以使用相关的特定于操作系统的 PID-to-useful-data 工具(赔率 - ps

于 2013-01-09T13:38:31.430 回答