如何在阅读前对目录中的文件进行排序?

Jim*_*Jim 6 python sorting file-io

我正在使用一个程序,根据从目录中读取文件的顺序将输出写入csv文件.但是带有大量文件的结尾为1,2,3,4,5,6,7,8,9,10,11,12.我的程序实际上按照字母顺序读取文件:1,10,11,12 ....,2,20,21 ..... 99.问题是另一个程序假定排序是数字排序,并使图结果偏斜.

实际文件看起来像:String.ext.ext2.1.txt, String.ext.ext2.2.txt等等......

我怎么能用python脚本做到这一点?

eum*_*iro 13

files = ['String.ext.ext2.1.txt', 'String.ext.ext2.12.txt', 'String.ext.ext2.2.txt']
# files: coming from os.listdir() sorted alphabetically, thus not numerically

sorted_files = sorted(files, key=lambda x: int(x.split('.')[3]))
# returns: ['String.ext.ext2.1.txt', 'String.ext.ext2.2.txt', 'String.ext.ext2.12.txt']
Run Code Online (Sandbox Code Playgroud)

  • `sorted_files = sorted(files,key = lambda x:int(x.split('.')[3]))``sorted`函数使用第二个参数给出的选择器对它的第一个参数进行排序.考虑按某列对表进行排序.现在,为第二个论点.它是一个函数,将您的文件名转换为部分列表(由`.`分隔)并获取该列表中的第3个元素 (2认同)

Mih*_*eac 5

对程序中的文件列表进行排序.不依赖于操作系统调用以正确的顺序提供文件,这取决于所使用的实际文件系统.


ʇsә*_*ɹoɈ 5

  1. 使用os.listdir获取文件名列表。
  2. 使用自然排序顺序对列表进行排序
  3. 按照排序列表的顺序处理文件。