我是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
答案 0 :(得分:0)
关于“两天前”部分,您应该使用datetime.datetime
和datetime.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
?)