使用python写一个程序,用来记录文件服务器上指定路径下对文件的增,删,要求记录操作时间,所操作的文件, 操作人(注意,不是运行程序的当前用户),在windows系统中,删除人可以通过什么方式获取
时间: 2024-05-12 15:19:16 浏览: 40
以下是使用Python实现文件服务器监控的示例代码:
```python
import os
import time
# 监控的文件夹路径
WATCH_DIR = 'C:\\Users\\Public\\Documents'
# 记录日志的文件路径
LOG_FILE = 'file_server.log'
# 获取当前时间
def get_current_time():
return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
# 获取指定路径下的所有文件
def get_all_files(path):
file_list = []
for root, dirs, files in os.walk(path):
for file in files:
file_list.append(os.path.join(root, file))
return file_list
# 记录日志
def log(action, file_path, username):
with open(LOG_FILE, 'a') as f:
f.write(f'{get_current_time()} {action} {file_path} {username}\n')
# 监控文件夹变化
def watch_dir():
# 获取当前用户名
username = os.environ.get('USERNAME')
# 获取初始文件列表
last_files = get_all_files(WATCH_DIR)
while True:
# 获取当前文件列表
current_files = get_all_files(WATCH_DIR)
# 记录新增文件
for file_path in current_files:
if file_path not in last_files:
log('ADD', file_path, username)
# 记录删除文件
for file_path in last_files:
if file_path not in current_files:
log('DEL', file_path, username)
# 更新文件列表
last_files = current_files
# 休眠1秒
time.sleep(1)
if __name__ == '__main__':
watch_dir()
```
在Windows系统中,可以通过`win32api.GetUserName()`函数获得当前登录用户的用户名。将上述代码中的`username`变量替换为以下代码即可:
```python
import win32api
username = win32api.GetUserName()
```
阅读全文