早上好,我需要编写一个脚本,用python将一天中的特定时间与特定文件“修改日期”进行比较。
我只是开始学习它,遇到了这个障碍。
我有这个
domt = datetime.strptime(time.ctime(os.path.getmtime("dom.xlsx")),"%a %b %d %H:%M:%S %Y")
还有这个
now = datetime.now()
targetime = now.replace(hour=16, minute=0, second=0, microsecond=0)
targetstr = targetime.strftime("%Y-0%#m-%#d %H:%M:%S")
我试图实现的目标是:
if targetstr < domt:
.....
这给了我一个TypeError,我无法比较str和set。
我了解我在做错什么,这是在尝试比较无可比拟的变量,其中目标时间为字符串,修改时间为“集合”。
但是由于我的知识局限性,而且我猜想没有Python的基本规则,所以我不能自己解决这个问题。
我浏览了其他有关Strftime和Strptime问题的线程,但似乎找不到与我的问题相关的答案
答案 0 :(得分:3)
如果您要比较时间,使用纪元时间而不是解析字符串可能会更容易。
domt = os.path.getmtime("dom.xlsx") # epoch time of modification
now = datetime.now() # now as datetime
targetime = now.replace(hour=16, minute=0, second=0, microsecond=0)
target_epoch = now.timestamp() # epoch of modified datetime object
if domt < target_epoch: # float comparison of epoch timestamps.
...
如果您确实想使用日期时间,则需要将两个时间都保留为datetime
对象,然后进行比较。
domt = datetime.fromtimestamp(os.path.getmtime("dom.xlsx"))
now = datetime.now() # now as datetime
targetime = now.replace(hour=16, minute=0, second=0, microsecond=0)
if domt < targettime: # datetime comparison
...
答案 1 :(得分:1)
尝试更简单:
from datetime import datetime, time
targettime = datetime.combine(datetime.now().date(), time(16))
timestamp = os.path.getmtime("dom.xlsx")
if targettime < datetime.fromtimestamp(timestamp):
...