import
os
import
time
from
watchdog.observers
import
Observer
from
watchdog.events
import
FileSystemEventHandler
import
tkinter as tk
from
tkinter
import
filedialog
class
MyHandler(FileSystemEventHandler):
def
__init__(
self
):
super
().__init__()
self
.added_count
=
0
self
.total_files
=
0
self
.processed_files
=
set
()
def
on_created(
self
, event):
if
not
event.is_directory:
success
=
self
.update_file_time(event.src_path)
if
success:
self
.added_count
+
=
1
self
.total_files
+
=
1
def
on_modified(
self
, event):
if
not
event.is_directory:
if
event.src_path
not
in
self
.processed_files:
success
=
self
.update_file_time(event.src_path)
if
success:
self
.added_count
+
=
1
self
.total_files
+
=
1
def
update_file_time(
self
, file_path):
normalized_path
=
os.path.normpath(file_path)
if
normalized_path
in
self
.processed_files:
return
False
self
.processed_files.add(normalized_path)
try
:
stat
=
os.stat(normalized_path)
current_mtime
=
stat.st_mtime
new_mtime
=
current_mtime
-
8
*
60
*
60
os.utime(normalized_path, (stat.st_atime, new_mtime))
print
(f
"新增文件: {normalized_path}"
)
return
True
except
Exception as e:
print
(f
"修改时间失败 {normalized_path}: {e}"
)
return
False
def
main():
root
=
tk.Tk()
root.withdraw()
path
=
filedialog.askdirectory(title
=
"选择需要修改缩减8小时的文件夹"
)
if
not
path:
print
(
"未选择文件夹,程序退出。"
)
return
event_handler
=
MyHandler()
observer
=
Observer()
observer.schedule(event_handler, path, recursive
=
True
)
observer.start()
try
:
while
True
:
time.sleep(
5
)
print
(f
"新增文件: {event_handler.added_count}, 总处理文件: {event_handler.total_files}"
)
event_handler.added_count
=
0
except
KeyboardInterrupt:
observer.stop()
observer.join()
print
(
"监控结束。"
)
if
__name__
=
=
"__main__"
:
main()