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,以获得更好的反馈。