你好,我正在寻找一种方法来确定哪些文件在我的整个系统(Linux)中使用Python打开。 我找不到任何模块。
或者唯一的办法是用命令lsof?
谢谢!
如果您查看psutil python模块的文档 (在PyPI上可用),您会发现一个方法,用于检查给定进程上的打开文件。 您可能需要获取所有活动PID的列表,如相关的堆栈溢出响应中所述 。 然后使用下面的方法:
get_open_files()返回由进程打开的常规文件作为namedtuples的列表,包括文件绝对路径名和文件描述符。 例:
>>> f = open('file.ext', 'w') >>> p = psutil.Process(os.getpid()) >>> p.get_open_files() [openfile(path='/home/giampaolo/svn/psutil/file.ext', fd=3)]
在0.2.1中更改:用C重写的OSX实现; 不再需要lsof。 在0.4.1中改变了:用C重写的FreeBSD实现; 不再需要lsof。
编辑:为了遍历活动PID psutil有另一个方法(这也是在上面的堆栈溢出响应中引用):
psutil.process_iter()
为本地机器上的所有正在运行的进程返回一个产生Process类实例的迭代器。 每个新的Process实例只创建一次,然后缓存到每次使用时更新的内部表中。