【问题标题】:Get names of all files in .txt without any sorting获取 .txt 中所有文件的名称,无需任何排序
【发布时间】: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


【解决方案1】:

解释我的问题帮助我找到解决问题的方法,因此解决方法是按文件创建日期排序,我终于设法做到了:

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

【讨论】:

    【解决方案2】:

    我是 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']
    

    【讨论】:

    • 我很在意,因为我需要根据文件编号绘制结果。所以我必须按名称(名称中的索引)或按创建日期对它们进行排序。我是 python 新手,所以我并没有真正理解你的答案,但这是否意味着没有办法这样做?在我看来,这应该很容易做到,我不敢相信它有那么复杂/不可行
    • 不久前我是 Python 新手,所以我明白了。这是有关如何按名称对文件进行排序和过滤的一个很好的参考。我希望这有帮助。祝你好运! thispointer.com/…
    • 不幸的是,这已经是我正在做的事情,我不想按名称排序。按创建日期排序会很好,但我没有成功
    • 你看过这个堆栈溢出条目了吗? stackoverflow.com/questions/168409/…
    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2014-07-30
    • 1970-01-01
    相关资源
    最近更新 更多