获取.txt中所有文件的名称,无需任何排序



我试着在文件夹中获取具有特定扩展名(比如.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进行AND过滤。

如果有人能帮我,我真的不知道现在该怎么办

解释我的问题有助于我确定如何解决它,因此一个变通方法是按文件创建日期排序,我最终成功地做到了这一点:

sorted_by_mtime_ascending = sorted(listTdmsFiles, key=lambda t: os.stat(t).st_mtime)

我是StackOverflow的新手,无法发表评论。正如Jarmod所说,你要么";小心;或";不在乎"如果它们被排序。你似乎很在乎。

因此,如果你正在寻找最有效的代码,这个答案不会让你满意。

>>> import os
>>> import fnmatch
>>> path = '/temp/'
>>> unsorted_list = [file_name for file_name in next(os.walk(path))[2]]
>>> unsorted_filtered_list = fnmatch.filter(unsorted_list,'*.txt')
>>> print(unsorted_list)
['3.txt', '7.yyy', '2.txt', '5.txt', '1.txt', '4.txt', '6.ttt', '1.aaa']
>>> print(unsorted_filtered_list)
['3.txt', '2.txt', '5.txt', '1.txt', '4.txt']

相关内容

最新更新