递归检查文件和目录的修改时间

时间:2019-08-09 19:30:42

标签: python python-3.x

我目前有一个脚本,用于检查和比较目录和文件的修改时间。我该怎么做,以便递归文件和目录也将被检查。当前,仅检查根目录。

import os
import time, stat

source_dir  = 'C:/Mydirectory'

# current time - last modified time
dtime = time.time() - os.stat(source_dir)[stat.ST_MTIME]

if dtime <= 30:   # 30 seconds
    print("Found modification in last 30 seconds.")
    run_here()

4 个答案:

答案 0 :(得分:0)

也许使用os.scandir处理目录树中的每个条目。

with os.scandir(source_dir) as it:
  for entry in it:
    dtime = time.time() - entry.stat()[stat.ST_MTIME]
    [...]

答案 1 :(得分:0)

os.walk()可以帮助您遍历源目录。可以这样

import os
import time, stat

source_dir  = 'C:/Mydirectory'

for currentdir, dirs, files in os.walk(source_dir):

   for file in files:
      currentfile = os.path.join(currentpath, file)
      # current time - last modified time
      dtime = time.time() - os.stat(currentfile )[stat.ST_MTIME]

      if dtime <= 30:   # 30 seconds
          print("Found modification in last 30 seconds for file =>", currentfile)

   for folder in dirs:
      currentfolder = os.path.join(currentpath, folder)
      # current time - last modified time
      dtime = time.time() - os.stat(currentfolder)[stat.ST_MTIME]

      if dtime <= 30:   # 30 seconds
          print("Found modification in last 30 seconds for folder =>", currentfolder )

答案 2 :(得分:0)

以下是使用os和Python 3中的lsitdir()函数在当前目录中检索文件的简单方法。

import os
import time, stat

source_dir  = 'C:/Mydirectory'

# current time - last modified time
with os.listdir(source_dir) as it:
  for entry in it:
    dtime = time.time() - os.stat(entry.path)[stat.ST_MTIME]

if dtime <= 30:   # 30 seconds
    print("Found modification in last 30 seconds.")
    run_here()

答案 3 :(得分:0)

您应该使用listdir来查找并浏览当前目录中的所有文件和目录。我相信您正在寻找这样的东西:

import os
import time, stat

source_dir  = 'C:/Mydirectory'

def recursiveScan(dir):
    # current time - last modified time
    dtime = time.time() - os.stat(dir)[stat.ST_MTIME]
    if dtime <= 30:   # 30 seconds
        print("Found {} was modified in last 30 seconds.".format(dir))
        run_here()
    for file in os.listdir(dir):
        try:
            recursiveScan(dir+"/"+file)
        except:
            continue

recursiveScan(source_dir)
相关问题