我不知道如何将"有一天"解释为日期或时间[Python]



我正在用一块关于日期时间的python工作。它的目的是列出从过去到今天的特定日期的文件。不幸的是,我得到这个错误:我不知道如何将"某一天"解释为日期或时间

代码:

import os
import datetime
day = 3
hour = day * 24
today =datetime.date.today()
someday = today - datetime.timedelta(hours=hour)
print someday, today
os.system('find . -type f -newerat someday !  -newerat today')
结果:

2016-08-31 2016-09-03发现:我不明白如何将"某一天"解释为日期或时间

我知道我错过了一些东西来定义"某一天"是一个日期。当我手动输入"2016-08-31"而不是"某一天"时,它就工作了。

这里有人可以花你宝贵的时间来帮助我。我非常感谢你的帮助。

Thank you

somedaydatetime.date对象。你的问题似乎真的是关于如何使用它在你的呼叫find。仅仅将someday放入字符串中是行不通的,因为Python无法知道字符串的"someday"部分与someday变量有关。

你可以使用字符串格式将somedaytoday插入到你传递给os.system的字符串中:

os.system('find . -type f -newerat {} ! -newerat {}'.format(someday, today))
一个更好的选择可能是使用一个更复杂的库函数,比如subprocess模块中的一个选项。它们通常可以接受一个参数列表,以传递给您选择的任何外部程序。
import subprocess
subprocess.call(['find', '.', '-type', 'f', '-newerat', str(someday), 
                                       '!', '-newerat', str(today)])

不要在find命令字符串中传递文字值somedaytoday,您需要包含这些python变量的字符串表示形式。试试下面这些:

os.system('find . -type f -newerat ' + str(someday) + ' ! -newerat ' + str(today))
os.system('find . -type f -newerat %s ! -newerat %s' % (str(someday), str(today)))

最新更新