【发布时间】:2022-01-07 07:41:06
【问题描述】:
我尝试在一个文件夹中获取所有具有特定扩展名(比如 .txt)的文件名。我在网上找到了很多相近的话题,但从来没有我想做的事情。
我最接近的是使用:
listFiles = glob.glob(sourdir + '/*.txt')
or
files = fnmatch.filter(os.listdir(sourdir+"/"), "*.txt")
or
[s for s in os.listdir(sourdir+"/") if s.endswith('.txt')]
它为我提供了某个文件夹中的所有 .txt 文件。但是,它会自动对文件进行排序!在我的文件夹中:
file0.txt, file1.txt, file2.txt, file3.txt, ...
对于任何给我这些文件的东西,我都有类似的东西:
file0.txt, file1.txt, file10.txt, file11.txt, ...
我只想按照它们在文件夹中的顺序读取文件名!做简单的事情怎么这么难..
如果我在循环中执行 os.listdir(sourdir+"/")[i],我可以看到 listdir 以正确的顺序检查文件,而不是排序的。但是我没有成功在循环中使用“os.listdir(sourdir+"/")[i]”并同时通过.txt过滤。
如果有人可以帮助我,我现在真的不知道该怎么办
【问题讨论】:
-
您的问题取决于声称“它们在文件夹中的顺序相同!”但是有这样的命令吗?我认为您看到文件的顺序取决于很多因素(例如 unix 中的 LC_COLLATE),但实际上没有 inherent 顺序。
-
“我只想按照它们在文件夹中的顺序读取文件名”:为什么?您要解决的问题取决于您在系统中查看文件的顺序(然后,这取决于您的查看器的操作)。
-
根据
glob.glob的文档:“结果是否排序取决于文件系统。”您为什么关心它们是否已排序? -
文件不是总是排序的吗?是按名称、大小还是日期...?
-
你真正想要达到什么目的?我想您对某个订单的需求是由于您将执行的处理。
标签: python python-3.x sorting