2011-11-24 80 views
7

我在C#寫了這個代碼,舊的檢查文件是否過時:在Python:檢查文件的修改時間比規定的日期時間

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' 
+0

到目前爲止你做了什麼?試着更具體地說明你不知道的事情。不要指望別人爲你編寫所有的代碼。 –

+0

我編輯了我的答案,以解決我試過的問題。 – Luke

回答

15

您想使用的功能os.path.getmtime(結合的time.time一個)。這應該給你一個想法:

>>> import os.path as path 
>>> path.getmtime('next_commit.txt') 
1318340964.0525577 
>>> import time 
>>> time.time() 
1322143114.693798 
+1

這個奇怪的數字究竟描述了什麼?我如何將它與日期進行比較? – Luke

+1

@Luke - 它們是[unix epoch](http://en.wikipedia.org/wiki/Unix_time)中的時間戳,其度量單位是秒。你可以將它們用作常規實數:通過加減它們。所以如果'time_a' - 'time_b'給你'3600'就意味着兩個小時之間已經過去了...... – mac

0

什麼是self.synchInterval()

你不能從一個datetime的。減去int,你應該使用datetime.timedelta

1

有你synchIntervall不是DateTime對象所以Python不能減少它的問題。您需要使用另一個日期時間對象。 喜歡:

synchIntervall = datetime.day(2) 

synchIntervall = datetime.hour(10) 

或更完整的一個:

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

前三是必需的。 通過這種方式,可以確定可以使用datetime.datetime.now()值計算的值中的變量。

相關問題