【发布时间】:2013-12-20 23:47:31
【问题描述】:
我编写了一个程序来创建几个 sqlite3 数据库临时文件。在开发中,我只是将它们存储在与 src 包相同的文件夹中的文件夹中。我忽略了这样一个事实,即在从 Program Files 编译和运行代码时需要管理员访问权限。 (我知道 Program Files 中的临时文件也是不好的做法)
问题是:没有问题。我没有收到IOError: [Errno 13] Permission denied: 或任何形式的警告。此外,如果我转到应该有临时文件的文件夹,则没有。
如果我添加一行
print os.path.exists(r'C:\Program Files (x86)\ProgramName\temp\filename.db')
或
print os.listdir(r'C:\Program Files (x86)\ProgramName\temp')
对我的程序,它显示文件在那里,但在资源管理器、cmd 或空闲中不存在。但是,它们确实出现在 cygwin 中。
我已经显示了隐藏的文件/文件夹,但它们没有显示出来。
如果我使用资源管理器复制临时文件夹,文件不会一起标记。如果我使用 cygwin 复制文件夹,他们会这样做。它们也会对资源管理器可见。
有其他人经历过这种情况或知道发生了什么吗?
【问题讨论】:
-
C:\Program Files (x86)\ProgramName\temp\filename.db是一个有效的 Linux 文件名。我不记得 Windows 是否真的可以“看到”这些文件,但你能确认不只是一个名为C:\Program Files (x86)\ProgramName\temp\filename.db的本地文件吗? -
IIRC,Windows 实际上将您的文件放在我不记得的其他地方,如果程序尝试写入 Program Files 中的安装目录,则假装它们将进入 Program Files 中。我曾经遇到过类似的问题。不幸的是,这与我的知识范围有关。
-
你用来创建文件的代码是什么?
-
@user2357112 谜团解开了,谢谢。我有一种感觉,windows 在幕后做了一些像这样的黑魔法,尽管 cygwin 看穿它对我来说仍然很奇怪。
标签: python windows file-io cygwin program-files