如何在读取之前对目录中的文件进行排序?
我正在做一个程序,它会根据从一个文件夹中读取文件的顺序,把结果写入一个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脚本来解决这个问题呢?
4 个回答
5
- 使用 os.listdir 来获取文件名的列表。
- 用 自然排序 来对这个列表进行排序。
- 按照你排序后的列表顺序处理这些文件。
5
在你的程序里对文件列表进行排序。不要依赖操作系统的调用来获取文件的正确顺序,因为这取决于实际使用的文件系统。
17
在编程中,有时候我们会遇到一些问题,尤其是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,特别是当我们不太了解这些工具的工作原理时。
比如说,某个功能可能在某种情况下正常工作,但在其他情况下却出现错误。这时候,我们需要仔细检查代码,看看是不是有什么地方没有考虑到,或者有没有遗漏的步骤。
有时候,解决问题的关键在于仔细阅读错误信息。错误信息就像是程序在告诉我们哪里出了问题,虽然它们可能看起来很复杂,但其实里面往往包含了我们需要的线索。
总之,遇到问题时,不要急于放弃。多尝试几种方法,仔细分析,通常都能找到解决的办法。
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']