[Python] is it possible to record a files path that is open on windows in file manager,...

Discussão em 'Python' iniciado por Stack, Julho 7, 2025.

  1. Stack

    Stack Membro Participativo

    as the title suggests i was wondering how i can get python to return a users currently opened files, not just using file manager but also other programs like vs code. i will than timestamp the data and record it. Is this possible? and if so how? Thanks!

    i tried this code(which is ai generated):

    import psutil
    import win32gui
    import win32process
    import time
    import json
    from datetime import datetime

    class FileTracker:
    def __init__(self):
    self.target_processes = {
    'explorer.exe': 'File Manager',
    'Code.exe': 'VS Code',
    'EXCEL.EXE': 'Excel',
    'AcroRd32.exe': 'Adobe Reader',
    'Acrobat.exe': 'Adobe Acrobat'
    }
    self.tracked_files = {}

    def get_open_files(self):
    current_files = {}

    for proc in psutil.process_iter(['pid', 'name']):
    try:
    proc_name = proc.info['name']
    if proc_name in self.target_processes:
    files = proc.open_files()
    if files:
    current_files[proc_name] = {
    'app_name': self.target_processes[proc_name],
    'files': [f.path for f in files],
    'timestamp': datetime.now().isoformat()
    }
    except (psutil.NoSuchProcess, psutil.AccessDenied):
    continue

    return current_files

    def track_continuously(self, interval=5):
    """Track files every 'interval' seconds"""
    while True:
    current_files = self.get_open_files()

    # Log new files
    for proc_name, data in current_files.items():
    if proc_name not in self.tracked_files:
    self.tracked_files[proc_name] = set()

    for file_path in data['files']:
    if file_path not in self.tracked_files[proc_name]:
    print(f"New file opened in {data['app_name']}: {file_path}")
    self.tracked_files[proc_name].add(file_path)

    time.sleep(interval)

    # Usage
    tracker = FileTracker()
    print("Currently open files:")
    files = tracker.get_open_files()
    for proc, data in files.items():
    print(f"\n{data['app_name']} ({proc}):")
    for file_path in data['files']:
    print(f" - {file_path}")

    Continue reading...

Compartilhe esta Página