python的tempfile用于方便的使用临时文件,tempfile提供了多种临时文件的使用方法,比如常用的NamedTemporaryFile和TemporaryFile。
可我发现,这两种方法在Windows下使用都不太方便,问题在于Windows与Linux在文件锁定机制的差异,Windows下缺省是锁定的(继承自Dos),Linux下缺省是不缩定的,而使用tempfile时,通常我们都是希望它不锁定,这使得在Windows下需要额外的处理,而NamedTemporaryFile和TemporaryFile都是在close时自动删除,所以处理起来比较麻烦。
后来我放弃了NamedTemporaryFile和TemporaryFile,转而使用mktemp,mktemp只是生成一个临时文件名,后续的open/read/write/close/delete操作完全取决于应用程序,这样在Windows下似乎好处理一些,可以绕过一些文件锁定的问题。