В Python: проверьте, не старше ли время изменения файла, чем определенное время - PullRequest
9 голосов
/ 24 ноября 2011

Я написал этот код на c #, чтобы проверить, устарел ли файл:

 DateTime? lastTimeModified = file.getLastTimeModified();
        if (!lastTimeModified.HasValue)
        {
            //File does not exist, so it is out of date
            return true;
        }
        if (lastTimeModified.Value < DateTime.Now.AddMinutes(-synchIntervall))
        {
            return true;
        } else
        {
           return false;
        }

Как мне написать это на python?

Я попробовал это на python.

statbuf = os.stat(filename)
if(statbuf.st_mtime < datetime.datetime.now() - self.synchIntervall):
    return True
 else:
    return False

Я получил следующее исключение

message str: unsupported operand type(s) for -: 'datetime.datetime' and 'int'   

Ответы [ 3 ]

17 голосов
/ 24 ноября 2011

Вы хотите использовать функцию os.path.getmtime (в сочетании с time.time).Это должно дать вам представление:

>>> import os.path as path
>>> path.getmtime('next_commit.txt')
1318340964.0525577
>>> import time
>>> time.time()
1322143114.693798
1 голос
/ 24 ноября 2011

Проблема в том, что ваш synchIntervall не является объектом даты и времени, поэтому Python не может уменьшить его. Вам нужно использовать другой объект datetime. как:

synchIntervall = datetime.day(2)

или

synchIntervall = datetime.hour(10)

или более полный:

synchIntervall = datetime.datetime(year, month, day, hour=0, minute=0, second=0)

первые три обязательны. Таким образом, вы определяете переменную в значении, которое можно вычислить с помощью значения datetime.datetime.now ().

0 голосов
/ 24 ноября 2011

Что такое self.synchInterval()?

Вы не можете вычесть int из datetime, вы должны использовать datetime.timedelta

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