2024-03-29 10:45:43 发布
网友
我的python脚本执行一个os.listdir(path),其中路径是一个队列,其中包含我需要逐个处理的存档。
os.listdir(path)
问题是,我得到一个数组中的列表,然后做一个简单的array.pop(0)。在我把这个项目置于颠覆状态之前,一切都很顺利。现在我得到了数组中的.svn文件夹,当然这会使我的应用程序崩溃。
array.pop(0)
.svn
所以我的问题是:在执行os.listdir()时是否存在忽略隐藏文件的现有函数,如果没有,最好的方法是什么?
os.listdir()
谢谢你。
这是一个老问题,但似乎缺少使用列表理解的明显答案,所以我在这里添加它是为了完整性:
[f for f in os.listdir(path) if not f.startswith('.')]
另外,文档状态listdir将以“任意顺序”返回结果,但常见的用例是按字母顺序排序。如果希望目录内容按字母顺序排序而不考虑大小写,可以使用:
listdir
sorted([f for f in os.listdir('./')], key=lambda f: f.lower())
你可以自己写:
def listdir_nohidden(path): for f in os.listdir(path): if not f.startswith('.'): yield f
或者可以使用glob:
def listdir_nohidden(path): return glob.glob(os.path.join(path, '*'))
其中任何一个都将忽略以'.'开头的所有文件名。
'.'
在Windows、Linux和OS X上:
if os.name == 'nt': import win32api, win32con def folder_is_hidden(p): if os.name== 'nt': attribute = win32api.GetFileAttributes(p) return attribute & (win32con.FILE_ATTRIBUTE_HIDDEN | win32con.FILE_ATTRIBUTE_SYSTEM) else: return p.startswith('.') #linux-osx
这是一个老问题,但似乎缺少使用列表理解的明显答案,所以我在这里添加它是为了完整性:
另外,文档状态
listdir
将以“任意顺序”返回结果,但常见的用例是按字母顺序排序。如果希望目录内容按字母顺序排序而不考虑大小写,可以使用:你可以自己写:
或者可以使用glob:
其中任何一个都将忽略以
'.'
开头的所有文件名。在Windows、Linux和OS X上:
相关问题 更多 >
编程相关推荐