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

如何获取文件的最后修改用户属性?已实现获取文件大小与修改时间

嘿,很高兴你已经搞定了文件大小和修改日期的获取!关于获取最后修改用户,这个得看你用的操作系统和工具/编程语言,我给你分几种常见场景详细说说:

获取文件最后修改用户的方法

首先得明确:不同操作系统对文件元数据的存储逻辑有差异,很多情况下我们获取的是文件所有者(创建或最后变更权限的用户),如果要精准追踪最后一次修改文件内容的用户,可能需要依赖系统审计日志,这个后面会提到。

1. 用Python实现跨平台获取

如果你是用Python处理的话,可以针对不同系统做适配:

  • Windows系统:借助pywin32库读取文件所有者信息(一般场景下可作为修改用户的参考):
import win32api
import win32security

def get_file_owner_win(file_path):
    # 获取文件安全描述符
    sd = win32security.GetFileSecurity(file_path, win32security.OWNER_SECURITY_INFORMATION)
    owner_sid = sd.GetSecurityDescriptorOwner()
    # 将SID转换为用户名
    name, domain, _ = win32security.LookupAccountSid(None, owner_sid)
    return f"{domain}\\{name}"

# 调用示例
print(get_file_owner_win("C:\\test.txt"))
  • Linux/macOS系统:通过os.stat获取文件的UID,再用pwd模块映射为用户名:
import os
import pwd

def get_file_owner_unix(file_path):
    stat_info = os.stat(file_path)
    uid = stat_info.st_uid
    return pwd.getpwuid(uid).pw_name

# 调用示例
print(get_file_owner_unix("/home/user/test.txt"))

你还可以结合sys.platform写一个自动适配的跨平台函数:

import sys

def get_file_modified_user(file_path):
    if sys.platform.startswith('win'):
        return get_file_owner_win(file_path)
    elif sys.platform in ['linux', 'darwin']:
        return get_file_owner_unix(file_path)
    else:
        raise NotImplementedError(f"暂不支持该平台:{sys.platform}")

2. 用系统命令直接查询

如果不想写代码,也可以用系统自带命令快速查看:

  • Windows:
    • 命令提示符:dir /q "你的文件路径",输出里的「所有者」列就是目标信息
    • PowerShell:Get-Acl "你的文件路径" | Select-Object -ExpandProperty Owner
  • Linux/macOS:
    • ls -l "你的文件路径",输出的第三列就是文件所有者
    • 更精准的命令:Linux用stat -c %U "你的文件路径",macOS用stat -f %Su "你的文件路径"

关于精准追踪最后修改用户的补充

如果你的需求是严格获取最后一次修改文件内容的用户,仅靠文件元数据可能不够——因为很多文件系统不会直接存储这个信息。这种情况下需要开启系统的文件审计功能:

  • Windows:在事件查看器中查看「安全日志」,筛选文件修改相关的事件
  • Linux:配置auditd服务,记录文件的修改操作日志

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:03:26