Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在运行时编写Python文件?_Python_Windows_Python 2.7_Python 3.x - Fatal编程技术网

如何在运行时编写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

我想用Python创建多个文本文件。这些文件将在代码运行时创建。我想用

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
,访问被拒绝。