使用.write()附加文件,但想使用变量

时间:2016-03-01 22:45:23

标签: python file datetime append syntax-error

在我的代码中,我打开了一个文件,我想在文件中附加当前的日期和时间。我正在使用datetime来获取日期

currenttime = datetime.datetime.now()

并将当前日期/时间分配给名为“currenttime”的变量

print(currenttime)
with open("log.txt", "a") as f:
    log.write(currenttime)

当我尝试这样做时,我收到错误:

TypeError: write() argument must be str, not datetime.datetime

3 个答案:

答案 0 :(得分:2)

这是因为您尝试将日期时间对象写入文本文件。您可以通过几种不同的方式转换datetime对象以使其可写,例如:

str(currenttime)

currenttime.isoformat()

即:

with open("log.txt", "a") as f:
    f.write(str(currenttime))

如果您想使用时间戳的特殊格式,可以使用strftime,例如:

In [1]: datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
Out[1]: '2016-03-01 23:52:36'

您可以在此处详细了解如何格式化日期时间:https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

从您的文件名称和您添加时间戳的事实来看,如果日志记录是您想要的,那么在python中查看日志记录模块可能是个好主意。它非常适合于此目的,而不是手动写入文件:https://docs.python.org/2/library/logging.html

答案 1 :(得分:2)

currenttime转换为带str()的字符串:

with open("log.txt", "a") as f:
    f.write(str(currenttime))

请注意,您应该使用f.write()而不是log.write()写入您的文件。

答案 2 :(得分:1)

Typecast datetime对象str

log.write(str(currenttime))