我正在用一块关于日期时间的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
someday
是datetime.date
对象。你的问题似乎真的是关于如何使用它在你的呼叫find
。仅仅将someday
放入字符串中是行不通的,因为Python无法知道字符串的"someday"
部分与someday
变量有关。
你可以使用字符串格式将someday
和today
插入到你传递给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
命令字符串中传递文字值someday
和today
,您需要包含这些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)))