Python 如何在读取前对目录中的文件进行排序?
我正在使用一个程序,该程序根据从目录中读取文件的顺序将输出写入csv文件。然而,有大量文件的结尾是1、2、3、4、5、6、7、8、9、10、11、12。我的程序实际上是按字母顺序读取文件的:1,10,11,12,2,20,21,99。问题是,另一个程序假定排序是数值排序,并使图形结果倾斜 实际文件看起来像: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脚本完成此操作?对程序中的文件列表进行排序。不要依赖操作系统调用来按正确的顺序
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)