使用.write()编写变量Python 3

使用.write()编写变量Python 3,python,Python,我试图用Python将字符串+日期时间写入文本文件。我正在尝试制作一个基本的记录器,它将以以下格式记录日期时间:;“完整工作日、日数、完整月份名称、完整年份、12小时格式、分钟、秒、上午/下午、UTC”。我读过这个文件。write()只能接受字符串,不能接受整数或日期等。那么我该如何将其写入文本文件呢 grab_date = datetime.datetime.now().strftime("%A %d, %B %Y %I:%M:%S %p %Z") firstline = "Log Creat

我试图用Python将字符串+日期时间写入文本文件。我正在尝试制作一个基本的记录器,它将以以下格式记录日期时间:;“完整工作日、日数、完整月份名称、完整年份、12小时格式、分钟、秒、上午/下午、UTC”。我读过这个文件。write()只能接受字符串,不能接受整数或日期等。那么我该如何将其写入文本文件呢

grab_date = datetime.datetime.now().strftime("%A %d, %B %Y %I:%M:%S %p %Z")
firstline = "Log Created: ", grab_date, "/nLog deleted and recreated."
f = open("gen-log.txt", "w")
f.seek(0)
f.write(firstline)
f.close()

编辑:不太清楚为什么,但我在一篇帖子上读到f.seek(0)做了一些事情,它对他们起了作用。哈哈,我把它忘在那里了。抱歉。

您可以将数据格式化为字符串;例如:

firstline = "Log Created: {}/nLog deleted and recreated.".format(grab_date)
您还可以利用的功能将所有参数转换为字符串和自动换行符,并将其写入文件:

print("Log Created:", grab_date, file=f)
print("Log deleted and recreated.", file=f)
如果可以避免的话,不要重新发明伐木轮,而是使用。它可以是:


使用
fileline=foo,bar,baz
所做的是将
fileline
设置为三个值的元组。你不能写元组,只能写字符串。(事实上,
print
可以接受一组逗号分隔的参数,这是因为
print
是一个特殊的语句。)为什么要打开并使用seek?是否有理由尝试编写自己的日志,而不是使用
日志记录
模块?还有很多事情需要处理,你甚至还没有开始着手处理(例如,追加而不是覆盖和/或移动旧文件,在单个函数调用中封装内容,这样就不必为每个日志消息编写6行代码,并决定是保持文件打开还是使用每条消息重新打开/关闭,还是将其批处理,等等)@abarnet仅仅因为你只看到6行代码并不意味着这就是全部。我在一个函数中有它,还有一堆其他的代码。我只是取了一段不起作用的代码片段。Python不是我所知道的第一种编程语言。不要根据封面来判断一本书,但是谢谢tipThanks的帮助!当你读到它时,它值得使用日志吗我真正添加到文本文件中的只是一些错误?@catalyst:当然,
日志记录
很容易使用,并且在以后需要更多控制时为您提供了很大的灵活性。该模块免费为您提供这些功能。
>>> import logging
>>> logging.basicConfig(datefmt="%A %d, %B %Y %I:%M:%S %p %Z", format='Log Created: %(asctime)-15s %(message)s')
>>> logging.warn('Foo bar baz!')
Log Created: Monday 28, July 2014 08:13:44 PM BST Foo bar baz!