如何导入一天的日志

时间:2014-11-24 22:03:07

标签: python logging import scripting

我是Python新手,需要一些帮助才能导入完成日期的旧日志。下面是我提出的脚本,但不确定它是否正常工作或是否有更好的方法来执行此操作。

def fileCreation(path):  
    now = time.time()  
    oneday_ago = now - (24*60*60) ## seconds in 1 day  
    if fileCreation < oneday_ago:  
        print f  
        getAuditRecords(f)  

我有一个脚本可以从2014年6月中旬导入整个数据库,但只需要获取一天的日志。

以下是我尝试导入的日志示例

  

/mnt/hcp1/R1P/R1P_ora_982_2.xml.201409070400
  /mnt/hcp1/R1P/R1P_ora_20_1.xml.201409070400
  /mnt/hcp1/R1P/R1P_ora_29962_1.xml.201409070400
  /mnt/hcp1/R1P/R1P_ora_15593_2.xml.201409070400
  /mnt/hcp1/R1P/R1P_ora_9946_1.xml.201409070400
  /mnt/hcp1/R1P/R1P_ora_10746_1.xml.201409070400
  /mnt/hcp1/R1P/R1P_ora_6508_1.xml.201409070400
  /mnt/hcp1/R1P/R1P_ora_17340_2.xml.201409070400
  /mnt/hcp1/SCC/SCC_ora_18881_2.xml.201407090400

2 个答案:

答案 0 :(得分:0)

关于“两天前”部分,您应该使用datetime.datetimedatetime.timedelta

E.g。

import datetime

now = datetime.datetime.now()
two_days = datetime.timedelta(days=2)
two_days_ago = now - two_days

答案 1 :(得分:0)

为了将文件创建时间与一天前进行比较,您需要实际获取文件创建时间。您的代码使用的是fileCreation函数;对于询问该功能是否少于一段时间,这并不意味着什么有用。


不幸的是,&#34;文件创建时间&#34;不是便携式概念。如果你真的想要,你需要为不同的平台编写不同的代码,我不会解释。

通常,您对&#34;文件修改时间&#34;感到满意。这是在创建文件时设置的,仅在您覆盖或附加到文件时更新。您可以使用getmtime来阅读此内容。所以:

def fileCreation(path):
    now = time.time()
    oneday_ago = now - (24*60*60) ## seconds in 1 day
    mtime = os.path.getmtime(path)
    if mtime < oneday_ago:
        print f
        getAuditRecords(f)

但是,看起来每个文件名都附有时间戳。如果/mnt/hcp1/R1P/R1P_ora_982_2.xml.201409070400表示该文件是在2014年9月7日04:00创建的(如果时区等不是问题),您可能需要考虑解析这些字符串而不是{{1该文件。

一旦您解析了日期字符串,您也可以使用更简单和更高级别的datetime库而不是更低级别的stat。 (您也可以使用之前的版本执行此操作,但由于time会返回getmtime - 样式时间戳,因此您必须手动转换它以将其用作time,所以没有什么优势。)

所以:

datetime

(另外,我不确定def fileCreation(path): now = datetime.datetime.now() oneday_ago = now - datetime.timedelta(days=1) fileext = os.path.splitext(path)[1][1:] filetime = datetime.datetime.strptime(fileext, '%Y%m%d%H%M') if filetime < oneday_ago: print f getAuditRecords(f) 是什么。也许你的意思是f?)