python os.listdir不显示所有文件

tru*_*com 5 python python-3.3

在我的windows7 64bit系统中,有一个以msconfig.exe文件夹命名的文件c:/windows/system32.是的,它必须存在.

但是当我os.listdir用来搜索文件夹c:/windows/system32时,我没有得到该文件.这是测试代码,在t1.py:

import os
files = os.listdir("c:/windows/system32")
for f in files:
    if f.lower() == "msconfig.exe":
        print(f)
Run Code Online (Sandbox Code Playgroud)

运行python后t1.py,我什么都没得到.为什么错过文件?如何列出文件夹下的所有文件?

BTW:我在windows 7 64bit下使用python 3.3.0 32bit版本

Col*_*ant 9

我不认为这是特定于Python的问题.在运行64位操作系统时,Windows 使用32位进程执行有趣的操作.在这种情况下,Windows可能会在运行32位python时向您显示C:\ Windows\SysWOW64 \作为system32的内容.SysWOW64包含32位版本的各种Windows组件,用于32位兼容层.

以下是在Windows 7 x64系统上运行的; explorer.exe(在本例中为64位)肯定会显示这些文件夹的不同内容,但是:

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import os
>>> 
>>> s32 = set(os.listdir('C:/Windows/System32'))
>>> s64 = set(os.listdir('C:/Windows/SysWOW64'))
>>> s32-s64 # the difference is an empty set!
set([])
Run Code Online (Sandbox Code Playgroud)


azh*_*rei 5

在64位Windows上运行的32位进程具有sysnative可用于此问题的别名。

C:\ Windows \ System32> systeminfo | 找到“系统类型”
系统类型:基于x64的PC

C:\ Windows \ System32> dir / b msconfig.exe
msconfig.exe

C:\ Windows \ System32> python
在Win32上的Python 2.7.6(默认值,2013年11月10日,19:24:18)[MSC v.1500 32位(Intel)]
键入“帮助”,“版权”,“信用”或“许可证”以获取更多信息。
>>>导入操作系统
>>> os.listdir中的'msconfig.exe'(r'c:\ windows \ system32')
假
>>> os.listdir中的'msconfig.exe'(r'c:\ windows \ sysnative')
真正
>>>

请参阅文件系统重定向器(MSDN),其中说:

通过将%windir%\ Sysnative替换为%windir%\ System32,32位应用程序可以访问本机系统目录。