我想在Python中创建多个文本文件。这些文件将在代码运行时创建。我正在考虑使用
fn = date.today().isoformat() + ".log"
或
>>> from datetime import date
>>> fn=ctime()+".txt"
>>> print fn
Thu Feb 18 22:21:35 2016.txt
这样我就可以获得唯一的文件名。但实验似乎并不是很好,因为我想动态地在其中插入数据,因为它可能来自任何外部源。有一些愚蠢的错误发生如下,
>>> fn = date.today().isoformat() + ".log"
>>> print fn
2016-02-18.log
>>> quit()
>>> fp = open( fn, "w" )
>>> fp.write( "data" )
>>> fp.close()
>>> fr=open(fp,"r")
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
fr=open(fp,"r")
TypeError: coercing to Unicode: need string or buffer, file found
或
>>> fn=ctime()+".txt"
>>> print fn
Thu Feb 18 22:21:35 2016.txt
>>> line1="unanimous resolution to this effect"
>>> fp = open( fn, "w" )
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
fp = open( fn, "w" )
IOError: [Errno 22] invalid mode ('w') or filename: 'Thu Feb 18 22:21:35 2016.txt'
我卡住了。但我的感觉是说我可能会做一些有趣的错误。如果有人可能会建议我如何解决问题或解决错误来解决问题。提前致谢。 我在Windows 10上使用Python2.7.11。
答案 0 :(得分:4)
您的第一个错误可能只是由于输入错误,您应该按文件名fn
打开可读文件,而不是fp
(文件对象,而不是字符串)。< / p>
第二个错误似乎是由于Windows的文件名限制,它在Linux环境中不会发生。
答案 1 :(得分:0)
文件名中不能有“:”,请使用:
import datetime
fn = datetime.datetime.now().strftime("%Y-%m-%d %H%M%S") + ".log"
print fn
给出:
2016-02-18 174710.log
答案 2 :(得分:0)
使用:
fr=open(fp.name,"r")
而不是:
fr = open( fp, "r" )