Python 从命令行参数转换时间

Python 从命令行参数转换时间,python,Python,我试图在当前目录中查找在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.j

我试图在当前目录中查找在
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-这将再次比较状态并报告


这是否正确?

关于
我不理解时间是如何工作的,请参阅文档:

  • :以浮点数形式返回自历元以来的时间(秒)
  • :返回值是一个数字,表示自历元起的秒数(请参阅时间模块)

因此,程序所做的是从当前时间(以秒为单位)中减去秒数,然后检查在此之后是否有修改过的文件(
os.path.getmtime(filepath)>=pass
)。

这是正确的,
time.time()
将为您提供一个Unix时间戳,表示自1970年1月1日以来已过了多少秒。
您可以在那里使用
time.time()-

但要做到这一点,您需要将用户给出的
分钟数乘以
60秒,然后从
time.time()
中减去。所有这些你都已经做过了

1447328031==2015-11-12:34
减去5*60,你就有五分钟的时间了

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

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”

代码风格建议:查看
if\uu name\uu==“main”
习惯用法,以及命令行解析的
argparse
。您还可以将最终代码发布到codereview.stackexchange.com,以获得更好的反馈。