如何在运行时编写Python文件?
我想用Python创建多个文本文件。这些文件将在代码运行时创建。我想用如何在运行时编写Python文件?,python,windows,python-2.7,python-3.x,Python,Windows,Python 2.7,Python 3.x,我想用Python创建多个文本文件。这些文件将在代码运行时创建。我想用 fn = date.today().isoformat() + ".log" 或 这样我就可以始终获得唯一的文件名。但实验似乎进展不太顺利,因为我想动态地将数据插入其中,因为它可能来自任何外部源。下面是一些愚蠢的错误 >>> fn = date.today().isoformat() + ".log" >>> print fn 2016-02-18.log >>> qu
fn = date.today().isoformat() + ".log"
或
这样我就可以始终获得唯一的文件名。但实验似乎进展不太顺利,因为我想动态地将数据插入其中,因为它可能来自任何外部源。下面是一些愚蠢的错误
>>> 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=date.today().isoformat()+“.log”
>>>打印fn
2016-02-18.log
>>>退出
>>>fp=打开(fn,“w”)
>>>fp.写入(“数据”)
>>>fp.close()
>>>fr=开放式(fp,“r”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
fr=开放式(fp,“r”)
TypeError:强制使用Unicode:需要字符串或缓冲区,找到文件
或
>fn=ctime()+“.txt”
>>>打印fn
Thu Feb 18 22:21:35 2016.txt
>>>line1=“就此达成一致决议”
>>>fp=打开(fn,“w”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
fp=打开(fn,“w”)
IOError:[Errno 22]无效模式('w')或文件名:“Thu Feb 18 22:21:35 2016.txt”
我被卡住了。但我的感觉告诉我,我可能犯了一些有趣的错误。如果有人可以建议我如何解决问题或解决错误来解决问题。提前谢谢。
我正在Windows 10上使用Python2.7.11 您的第一个错误可能是由于键入错误,您应该按文件名
fn
,而不是fp
(这是文件对象,不是字符串)打开可读文件
第二个错误似乎是由于Windows的文件名限制造成的,它在Linux环境中不会发生。第一个错误可能是由于键入错误,您应该按文件名
fn
,而不是fp
(这是一个文件对象,而不是字符串)打开可读文件
第二个错误似乎是由于Windows的文件名限制,它在Linux环境中不会发生。在文件名中不能有“:”使用以下命令:
import datetime
fn = datetime.datetime.now().strftime("%Y-%m-%d %H%M%S") + ".log"
print fn
给出:
2016-02-18 174710.log
文件名中不能有“:”,请使用以下选项:
import datetime
fn = datetime.datetime.now().strftime("%Y-%m-%d %H%M%S") + ".log"
print fn
给出:
2016-02-18 174710.log
使用:
而不是:
fr = open( fp, "r" )
使用:
而不是:
fr = open( fp, "r" )
如果您尝试在文件名中使用冒号,它会做一些奇怪的事情。请参阅Windows不允许文件名中包含
:
字符。作为替代方法,您也可以使用调用返回的file对象的.name
属性来获得保证唯一的文件名(尽管它们并不漂亮)。如果您尝试在文件名中使用冒号,则会出现奇怪的情况。请参阅Windows不允许文件名中包含:
字符。作为替代方法,您也可以使用调用返回的file对象的.name
属性来获得保证唯一的文件名(尽管它们不会很漂亮)。谢谢。它起作用了,但我重新发布了这个问题,因为我发布的问题有点错误。仅供参考,“Thu Feb 18 22:21:35 2016.txt”是一个名为“Thu Feb 18 22”的文件,流名为“21”,流类型为“35 2016.txt”。后者不是有效的流类型,例如$DATA
或$INDEX\u ALLOCATION
。请参阅上的MSDN。默认类型为$DATA
,默认流为匿名流,即文件。ext
相当于文件。ext::$DATA
。目录也可以有$DATA
流,但不能是匿名流;尝试将目录创建或打开为常规文件相当于访问dirname::$DATA
,访问被拒绝。谢谢。它起作用了,但我重新发布了这个问题,因为我发布的问题有点错误。仅供参考,“Thu Feb 18 22:21:35 2016.txt”是一个名为“Thu Feb 18 22”的文件,流名为“21”,流类型为“35 2016.txt”。后者不是有效的流类型,例如$DATA
或$INDEX\u ALLOCATION
。请参阅上的MSDN。默认类型为$DATA
,默认流为匿名流,即文件。ext
相当于文件。ext::$DATA
。目录也可以有$DATA
流,但不能是匿名流;尝试以常规文件的形式创建或打开目录相当于访问dirname::$DATA
,访问被拒绝。