为什么os.path.exists("C:\\windows\\system32\\inetsrv\\metaback")即使存在也返回False?
我有一个Python程序,目的是清理一些文件夹,其中一个文件夹是 C:\windows\system32\inetsrv\metaback
。但是,尽管这个文件夹确实存在(而且我有权限访问),使用 os.path.exists()
检查时却返回了False。
有趣的是,工具 windirstat 也完全找不到这个文件夹。
有没有人能想到这可能是什么原因?还有什么其他方法可以检查这个文件夹是否存在?我甚至无法在这个文件夹上运行 os.listdir()
。
更新:如果Windows是32位的,os.path.exists()
在这个文件夹上是有效的,但如果是64位的就不行了。在32位的系统上,windirstat也能正确显示这个文件夹。
2 个回答
Windows x64的安全性比Windows x86要高很多,尤其是在现在的操作系统版本(比如7和2008)下。
听起来你的脚本没有足够的权限来运行。一般来说,微软对一些文件夹路径(比如c:\inetpub)进行了限制,这些地方需要更高的权限才能进行任何操作。
这样做有很多原因,通常被认为是件好事。
我建议你把你的脚本(或者执行它的程序)设置为“以管理员身份运行”,这样就能获得更高的控制权限。当然,这可能需要你通过用户账户控制(UAC)来确认执行。
想要了解更多信息,可以去serverfault.com问问。
这是关于在工作中系统文件夹重定向的内容。当一个32位程序在64位版本的Windows上运行,并且使用路径%WINDIR%\System32
时,Windows会把它替换成%WINDIR%\SysWow64
。
这个函数返回false,意思是C:\windows\syswow64\inetsrv\metaback
这个文件夹不存在,这个判断很可能是对的。
你可以试试这个:
os.path.exists("C:\\windows\\sysnative\\inetsrv\\metaback")