如何使用python的os.listdir跳过无法访问的文件夹?

时间:2011-09-06 10:53:06

标签: python directory

我正在使用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']

我无法访问某些给定的文件夹。例如:应用程序数据,Cookie,菜单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/*.*'

所以,我的问题是,如何检测无法访问的文件夹并跳过它们只显示用户可以浏览的文件夹?

2 个答案:

答案 0 :(得分:3)

for el in os.listdir('C:\Users\MyUser'):
    try:
        (check if you can open, if so, you can show this folder)
    except WindowsError:
        pass  

答案 1 :(得分:1)

for myFile in myList():
    if not os.access(myFile, os.R_OK):
        myList.pop(myList.index(myFile))

列表应仅包含路径。否则,您需要根据属性修改循环。