os.tmpfile() 在Windows下不工作?

2 投票
2 回答
1119 浏览
提问于 2025-04-17 04:33

我正在Windows系统下使用generateDS,它用到了os.tmpfile。不过,os.tmpfile对我来说不太好用:

(oneclickcos) C:\Users\Marcin\Documents\oneclickcos\xsd>python
Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.tmpfile()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 13] Permission denied
>>>

我已经把所有的临时目录权限设置为所有人都可以完全控制,所以这应该不是问题所在。

那可能是什么原因呢?

2 个回答

1

正如Griffin所说,问题在于os.tmpfile()这个函数试图在根目录下创建一个文件。如果你不想以管理员身份运行这个脚本,可以使用os.tmpnam(),然后自己来处理这个文件。

警告: 使用tmpnam()可能会受到符号链接攻击的威胁。

3

以管理员身份运行这个脚本(右键点击脚本,选择“以管理员身份运行”),因为这个脚本没有权限去执行 os.tmpfile() 这个功能。

补充说明:我看到你在使用解释器,直接以管理员身份运行解释器就可以了。如果你是通过终端访问它,那么以管理员身份运行终端就足够了。

撰写回答