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

Python 如何在读取前对目录中的文件进行排序?,python,sorting,file-io,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脚本完成此操作?对程序中的文件列表进行排序。不要依赖操作系统调用来按正确的顺序

我正在使用一个程序,该程序根据从目录中读取文件的顺序将输出写入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脚本完成此操作?

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

您可以使用以下方法:

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']
fileNames = ['String.ext.ext2.2.txt', 'String.ext.ext2.20.txt', 'String.ext.ext2.1.txt', 'String.ext.ext2.10.txt', 'String.ext.ext2.11.txt', 'String.ext.ext2.0.txt',]
fileNames = sorted(fileNames, key=lambda y: int(y.rsplit('.', 2)[1]))
  • 用于获取文件名列表
  • 使用以下命令对列表进行排序
  • 按照已排序列表的顺序处理文件

  • sorted_files=sorted(files,key=lambda x:int(x.split('.')[3])
    排序函数使用第二个参数给定的选择器对第一个参数进行排序。考虑按某一列对表进行排序。现在来看第二个论点。这是一个将文件名转换为一个部件列表(由
    分隔)的函数,并使用该列表中的第三个元素:sorted_files=sorted(file_list,key=lambda x:int(x.split('.)[3])if(x.endswith(“txt”))else x)