吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 920|回复: 7
上一主题 下一主题
收起左侧

[Python 原创] FTP(Filezilla Server)上传文件属性自动缩减8小时工具

[复制链接]
跳转到指定楼层
楼主
killerzeno 发表于 2025-4-3 10:02 回帖奖励
FTP(Filezilla Server)上传文件属性自动缩减8小时工具


        由于phpstudy_pro中自带的FTP架设工具Filezilla Server 0.9.60 beta版本比较低(官方也不调整一下,估计是觉得以前版本比较小巧),导致FTP上传时会自动将文件属性增加8小。我查询了很多资料没能找到可以通过参数或软件自身设置选项缩减本地8小时的时差。Filezilla后期版本好像可以调整设置或改写参数。所以写了这个工具,方便自动监测服务器设定的文件夹,检测到有文件上传则自动修正属性,将修改日期,创建日期,访问日期在第一时间缩减8小时,确保在网页访问时看到的数据时间是准确的。有需要的自取~希望可以帮到大家~支持吾爱破解~


这个是上传时,时间会自动延后8小时          



监测到数据上传会自动处理缩减本地文件属性8小时



处理后的文件属性



[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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):
        # 事件触发时,event.src_path是新创建的文件路径
        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
            # 减少8小时,8小时 = 8 * 60 * 60 秒
            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:
            # 每5秒打印一次统计信息
            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()

免费评分

参与人数 3吾爱币 +7 热心值 +3 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
FM1122 + 1 + 1 热心回复!
SPL + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
冒个泡 发表于 2025-4-3 11:10
FTP类的工具不少,没用过这个,没想到居然还有这种BUG,当然也可能不算是bug
3#
bangejunren 发表于 2025-4-3 11:13
这个问题可能和时区有关系吧,我们属于东8区。
4#
 楼主| killerzeno 发表于 2025-4-3 11:25 |楼主
bangejunren 发表于 2025-4-3 11:13
这个问题可能和时区有关系吧,我们属于东8区。

是时区的问题。但是软件上解决不了~又不能调整本地电脑的时间。很尴尬~
5#
FishDreamer 发表于 2025-4-3 14:00
学习了 大佬牛逼
6#
臭臭云盘 发表于 2025-4-3 14:43
我一直用的 server-u
7#
下载小王子 发表于 2025-4-3 15:48
学习,思路很不错。
8#
xdm2211 发表于 2025-4-3 16:49
服务器时区调整成GMT就可以了。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-7 03:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表