Python 如何正确比较ctime?
我有一个程序,可以获取目录和文件的修改日期/时间。然后我想得到30秒前的日期/时间,并将其与修改后的日期/时间进行比较 如果修改的时间少于30秒,我想触发警报。即使修改的时间发生在30秒前,我的代码也会触发警报 如果修改发生在30秒之前,是否有办法触发警报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():
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
?是的,很好。