Python 如何正确比较ctime?

Python 如何正确比较ctime?,python,python-3.x,Python,Python 3.x,我有一个程序,可以获取目录和文件的修改日期/时间。然后我想得到30秒前的日期/时间,并将其与修改后的日期/时间进行比较 如果修改的时间少于30秒,我想触发警报。即使修改的时间发生在30秒前,我的代码也会触发警报 如果修改发生在30秒之前,是否有办法触发警报 import os.path import time, stat import sys share_dir = 'C:/mydir' source_dir = r'' + share_dir + '/' def trigger():

我有一个程序,可以获取目录和文件的修改日期/时间。然后我想得到30秒前的日期/时间,并将其与修改后的日期/时间进行比较

如果修改的时间少于30秒,我想触发警报。即使修改的时间发生在30秒前,我的代码也会触发警报

如果修改发生在30秒之前,是否有办法触发警报

import os.path
import time, stat
import sys

share_dir = 'C:/mydir'
source_dir  = r'' + share_dir + '/'

def trigger():
    print("Triggered")

def check_dir():
    while True:
        for currentdir, dirs, files in os.walk(source_dir):
            for file in files:
                currentfile = os.path.join(currentdir, file)

                # get modified time for files
                ftime = os.stat(currentfile )[stat.ST_MTIME]
                past = time.time() - 30  # last 30 seconds
                if time.ctime(ftime) >= time.ctime(past):
                    print(time.ctime(ftime) + " > " + time.ctime(past))
                    print("Found modification in last 30 seconds for file =>", currentfile, time.ctime(ftime))
                    trigger()
                    sys.exit()
                else:
                    print('No recent modifications.' + currentfile)
            for folder in dirs:
                currentfolder = os.path.join(currentdir, folder)

                # get modified time for directories
                dtime = os.stat(currentfolder)[stat.ST_MTIME]
                past = time.time() - 30  # last 30 seconds
                if time.ctime(dtime) >= time.ctime(past):
                    print(time.ctime(dtime) + " > " + time.ctime(past))
                    print("Found modification in last 30 seconds for folder =>", currentfolder, time.ctime(dtime))            
                    trigger()
                    sys.exit()
                else:
                    print('No recent modifications: ' + currentfolder)
        time.sleep(4)

if __name__ == "__main__":
    check_dir()

我在一个大型文件系统上做这个。我个人使用SQLite3并对文件的
mtime
进行取整(我使用任何其他类型的操作都会发生奇怪的事情,而且更加一致)

我也不确定你为什么不只是做一个纯数学的解决方案。取当前时间,取文件的
mtime
,找出它们之间的差异,如果小于或等于30,则会得到一个命中率

我重拨了一些密码。我建议你试试这个:

import os.path
import time, stat
import sys 

def trigger():
    print("Triggered")

def check_dir(source_dir):
    for currentdir, dirs, files in os.walk(source_dir):
        for file in files:
            currentfile = os.path.join(currentdir, file)

            # get modified time for files
            ftime = os.path.getmtime(currentfile)
            if time.time() - ftime <= 30: 
                print("Found modification in last 30 seconds for file =>", currentfile, time.ctime(ftime))
                trigger()
                exit(0)

            else:
                print('No recent modifications.' + currentfile)

        for folder in dirs:
            currentfolder = os.path.join(currentdir, folder)

            # get modified time for directories
            dtime = os.stat(currentfolder)[stat.ST_MTIME]
            if time.time() - dtime <= 30: 
                print("Found modification in last 30 seconds for folder =>", currentfolder, time.ctime(dtime))
                trigger()
                exit(0)

            else:
                print('No recent modifications: ' + currentfolder)

if __name__ == "__main__":
    check_dir('yourdirectoryhere')
导入操作系统路径
导入时间,统计
导入系统
def触发器():
打印(“触发”)
def检查目录(源目录):
对于os.walk(source\u dir)中的currentdir、dirs和文件:
对于文件中的文件:
currentfile=os.path.join(currentdir,file)
#获取文件的修改时间
ftime=os.path.getmtime(当前文件)

如果time.time()-ftime,您不是想对目录使用
dtime
?是的,很好。