我正在使用Python和JavaScript,我的程序的一个具体部分存在问题。我需要向用户/客户端显示特定目录的内容。我使用Python的os.listdir来实现此目的。该函数会给我返回目录中的所有内容,包括不可访问的文件夹(这些我不希望向用户/客户端显示)。
我将举个例子,在浏览C:\Users\MyUser目录时,os.listdir会返回以下结果:
In [18]: os.listdir('C:\Users\MyUser')
Out[18]: ['.eclipse', '.gimp-2.6', '.hdfview2.7', '.matplotlib', '.pylint.d', '.recently-used.xbel', '.xy', 'AppData', 'Application Data', 'Aptana Rubles', 'Contacts', 'Cookies', 'Defini\xe7\xf5es locais', 'Desktop', 'Documents', 'Downloads', 'Dropbox', 'Favorites', 'InstallAnywhere', 'Links', 'Menu Iniciar', 'Modelos', 'Music', 'My Documents', 'NetHood', 'OpenSignals Files', 'Os meus documentos', 'Pictures', 'PrintHood', 'Recent', 'Saved Games', 'SciTE.session', 'Searches', 'SendTo', 'Thumbs.db', 'Tracing', 'Videos', 'workspace', '_ipython']
我无法访问其中一些给定的文件夹。例如:应用程序数据,Cookies,Menu Iniciar(葡萄牙语表示开始菜单),Modelos,Os meus Documentos(葡萄牙语表示我的文档),NetHood,PrintHood和SendTo。如果我尝试使用Python访问它们,我会得到以下错误:
WindowsError Traceback (most recent call last)
C:\Users\Plux\<ipython console> in <module>()
WindowsError: [Error 5] Denied Access: 'C:\\Users\\Plux\\Cookies/*.*'
所以我的问题是,我如何检测无法访问的文件夹并跳过它们,只向用户显示他可以浏览的文件夹?
os.W_OK
,这是写入权限;如果这也不起作用,您需要使用file()
和os.listdir()
创建一个try-except循环,并使用IOError
和OSError
异常。实际上它会比那慢得多。基本上,您将要打开文件并列出目录,如果捕获到任何错误,则从数组中弹出。 - Umur Kontacı