Python模块tempfile
包含NamedTemporaryFile
和TemporaryFile
。 前者的文件说
当命名临时文件仍处于打开状态时,是否可以使用该名称再次打开该文件,这在不同的平台上是不同的(它可以在Unix上使用;不能在Windows NT或更高版本上使用)
如果我不能使用这个名字,那么这个文件有什么名字? 如果我想在Windows上使用Unix(对我来说)有用的话,我必须复制一段代码,然后把所有的位表示为if _os.name == 'nt'
等等。
是什么赋予了? 当然,这对于某些东西是有用的,因为它被这样刻意地编码,但那是什么东西?
它指出,它仍然是开放的第二次访问它。 您仍然可以使用该名称,否则在创建NamedTemporaryFile
时确保传递delete=False
,以便在关闭后保留它。
你不想“把所有的东西都撕掉……”。 它是这样编码的原因。 它说,你还不能打开它第二次,而它仍然是开放的。 别。 只要使用一次,扔掉(毕竟,这是一个临时文件)。 如果你想要一个永久的文件,创建你自己的。
“这对于某些事情来说肯定是有用的,因为它是以这种方式刻意编码的,但那是什么东西”。 那么,我已经用它来写邮件(以二进制格式),然后将它们复制到我们的Exchange服务器拾取并发送它们的位置。 我相信还有很多其他的用例。
我很确定,Python库编写者不只是决定让Windows上的NamedTemporaryFile
行为有所不同。 由于Windows和Unix之间的平台差异,所有这些_os.name == 'nt'
测试将会在那里。 所以我从这个文档中推断出,在Windows上,打开NamedTemporaryFile
打开的文件的方式不能再次打开,而NamedTemporaryFile
仍然打开,这是由于Windows的工作原理。