2015-11-12 65 views
1

我想在当前目录中查找在x分钟数量内更改的所有文件。 x将是用户在运行脚本时给出的命令行参数。从命令行参数转换时间

我有问题的命令行参数转换成秒相应的号码:

这里是我有

import os,sys,time 

var = int(sys.argv[1]) 
past = time.time() - var * 60 

result = [] 
dir = os.getcwd() 

for p, ds, fs in os.walk(dir): 
    for fn in fs: 
     filepath = os.path.join(p, fn)  
     status = os.stat(filepath).st_mtime 
     if os.path.getmtime(filepath) >= past: 
      result.append(filepath) 
      print result 

这似乎是工作确定,但我不明白怎么工作时间。如果用户输入5分钟,那么我乘以5 * 60,得到300 - 然后再比较状态并报告回来。

这是正确的吗?

+0

代码风格建议:查看'if __name__ =='main''成语,并在'argparse'查看命令行解析。您还可以将最终代码发布到codereview.stackexchange.com以获得更好的反馈。 – jcollado

回答

1

关于I don't understand how time works,请参考相关文档:

  • time.time():返回以秒为单位的时间,因为历元作为一个浮点数。
  • os.path.getmtime():返回值是一个给出历元以来秒数的数字(请参阅时间模块)。

那么,什么程序做的是从当前时间中。减去秒秒的金额,然后检查是否有。那是(os.path.getmtime(filepath) >= past)后修改的文件。

0

这是正确的,time.time()会给你一个Unix时间戳,这意味着自1月1多少秒的流逝1970年
那里你可以采取time.time() - <seconds>

但要这样做,您需要将minutes乘以60 seconds并将其从time.time()中减去。所有这些你已经完成了。

1447328031 == 2015-11-12 12:34 从中减去5 * 60,你有五分钟过去。

另一种方法是使用strptime,它可以读取人类可读的时间并将其转换为您可以使用的时间戳。

from time import strptime 

past_struct = strptime("2015-11-12 12:24:00", "%Y-%m-%d %H:%M:%S") 
past = mktime(past_struct) 

哪个会给你选择做python myscript.py "2015-11-12 12:24:00"