gpt4 book ai didi

python - 在 Linux 中使用 Python 检查打开的文件

转载 作者:IT王子 更新时间:2023-10-29 00:11:16 26 4
gpt4 key购买 nike

我正在寻找一种方法来使用 Python 确定在我的整个系统 (Linux) 中打开了哪些文件。我找不到执行此操作的任何模块。

或者也许唯一的方法是使用命令 lsof?

最佳答案

截至 2018 年 4 月的更新 psutil 的最新版本:

较新版本的 psutil 现在为此使用了一个略有不同的函数名称,open_files,如以下示例所示 their docs :

>>> import psutil
>>> f = open('file.ext', 'w')
>>> p = psutil.Process()
>>> p.open_files()
[popenfile(path='/home/giampaolo/svn/psutil/file.ext', fd=3)]

psutil 的原始答案/旧版本:

如果您查看 documentation对于 psutil python 模块(在 PyPI 上可用),您将找到一种方法来检查给定进程上的打开文件。您可能希望获得所有事件 PID 的列表,如 related stack overflow response 中所述。 .然后使用下面的方法:

get_open_files()将进程打开的常规文件作为命名元组列表返回,包括文件绝对路径名和文件描述符。示例:

>>> 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 中更改:OSX 实现用 C 重写;不再需要 lsof。在 0.4.1 中更改:用 C 重写的 FreeBSD 实现;不再需要 lsof。

编辑:为了遍历事件的 PID,psutil 有另一种方法(在上面的堆栈溢出响应中也有引用):

psutil.process_iter()

返回一个迭代器,为本地机器上所有正在运行的进程生成一个 Process 类实例。每个新的 Process 实例只创建一次,然后缓存到一个内部表中,每次使用时都会更新该表。

关于python - 在 Linux 中使用 Python 检查打开的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20106220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com