Python - возвращает дату изменения из папки - PullRequest
2 голосов
/ 18 июня 2019

У меня есть следующий код для получения даты последнего изменения из файлов, представленных в папке:

path = 'C://Reports//Script//'

modTimesinceEpoc = os.path.getmtime(path)
modificationTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(modTimesinceEpoc))
modificationTime = datetime.strptime(modificationTime, '%Y-%m-%d %H:%M:%S')

Но при этом возвращается дата изменения из папки, и я хочу проверять только даты изменения из файлов, поскольку я не хочу знать дату изменения из папки.

Как я могу обновить свой код?

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Вам нужно перечислить все файлы в каталоге и найти метку времени после этого.Ниже приведен пример кода.

Обновление - добавлена ​​обработка для Windows и Linux отдельно.

import os
import time
import platform
from datetime import datetime

path = 'C://Reports/Script/'
files_path = ['%s%s'%(path, x) for x in os.listdir(path)]

print platform.system()

for file_p in files_path:
    if platform.system() == 'Windows':
        modTimesinceEpoc = os.path.getctime(file_p)
    else:
        statbuf = os.stat(file_p)
        modTimesinceEpoc = statbuf.st_mtime

    modificationTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(modTimesinceEpoc))
    modificationTime = datetime.strptime(modificationTime, '%Y-%m-%d %H:%M:%S')

    print file_p, modificationTime
0 голосов
/ 18 июня 2019

Используя библиотеку path.py , вы можете сделать:

from path import Path

mydir = Path(r"\path\to\dir")

mtime = max([f.getmtime() for f in mydir.walkfiles()])
print(mtime)

Или, если вы не можете использовать какие-либо внешние библиотеки:

import os
from pathlib import Path

mydir = Path(r"c:\dev\python\mncheck")

mtime = max([mydir.joinpath(root).joinpath(f).stat().st_mtime for root, _, files in os.walk(mydir) for f in files])

print(mtime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...