You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python获取进程对应的打开文件路径(而非应用程序路径)?

获取记事本进程打开的文件路径(而非程序路径)

要获取记事本进程对应的已打开文件路径,你需要解析进程的命令行参数,或者结合窗口标题信息,以下是两种可行方案:

方案1:通过psutil解析命令行参数

记事本(包括UWP版)在打开文件时,会将文件路径作为命令行参数传递,我们可以通过psutil的cmdline()方法提取该路径:

import psutil

for proc in psutil.process_iter(['pid', 'name', 'cmdline']):
    if proc.info['name'] == "Notepad.exe":
        pid = proc.info['pid']
        cmdline_args = proc.info['cmdline']
        opened_file = "No file opened"
        
        if len(cmdline_args) > 1:
            # 处理UWP版记事本的-FilePath参数格式
            for arg in cmdline_args[1:]:
                if arg.startswith('-FilePath:'):
                    opened_file = arg.split(':', 1)[1]
                    break
            # 处理传统桌面版记事本的直接参数格式
            if opened_file == "No file opened":
                opened_file = cmdline_args[1]
        
        print(f"Process ID: {pid} => Opened File: {opened_file}")

方案2:结合窗口标题获取(更稳定)

如果命令行参数获取失败(比如权限限制),可以通过pywin32模块读取记事本窗口标题(格式为文件名 - 记事本)来提取文件路径:

首先安装依赖:

pip install pywin32

然后运行代码:

import psutil
import win32gui
import win32process

def get_notepad_files():
    # 先收集所有记事本进程的PID
    notepad_pids = {proc.pid: "No file opened" for proc in psutil.process_iter() if proc.name() == "Notepad.exe"}

    # 遍历所有窗口,匹配记事本进程的窗口标题
    def enum_windows_callback(hwnd, pid_map):
        window_title = win32gui.GetWindowText(hwnd)
        if window_title:
            try:
                _, pid = win32process.GetWindowThreadProcessId(hwnd)
                if pid in pid_map:
                    # 解析窗口标题提取文件名
                    if " - 记事本" in window_title:
                        pid_map[pid] = window_title.split(" - 记事本")[0]
            except Exception:
                pass
        return True

    win32gui.EnumWindows(enum_windows_callback, notepad_pids)

    # 输出结果
    for pid, file_path in notepad_pids.items():
        print(f"Process ID: {pid} => Opened File: {file_path}")

get_notepad_files()

注意事项

  • 运行脚本需要管理员权限,否则可能无法访问部分进程的敏感信息。
  • 若记事本未打开任何文件,会显示No file opened。
  • UWP版记事本的命令行参数格式可能随系统版本调整,若方案1失效,优先使用方案2。

内容的提问来源于stack exchange,提问作者aytas31

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:05:30