我怎么能在运行时编写Python文件?

时间:2016-02-18 17:38:01

标签: python windows python-2.7 python-3.x

我想在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。

3 个答案:

答案 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" )