如何根据文件内容对目录中的文件进行排序?

时间:2018-12-14 10:37:00

标签: python python-3.x

我是编程新手,目前我正在尝试根据每个文件的内容在目录中整理“ .text”文件。

文件的内容中将包含随机数,例如'a.text' = 5'b.text' = 3。我希望使用Python根据目录内容的值升序对目录中的文件进行排序。

我尝试查看sorted()sort(),但发现的大部分只是对文件中的值进行排序。谢谢您的提前帮助。

2 个答案:

答案 0 :(得分:2)

您需要定义一个可用作key / sort的{​​{1}}的函数。

我们在这里打开它,阅读内容并将其转换为sorted。假定每个文件中只有一个数字(没有其他内容),并且可以将其转换为float。对于每个输入记录,该键函数都只调用一次(因此不会读取不必要的文件)。

float

有两个这样的文件:

def get_content(file_name):
    with open(file_name) as f:
        return float(f.read())

files = ["a.txt", "b.txt"]
sorted(files, key=get_content)
# ['b.txt', 'a.txt']

答案 1 :(得分:1)

以@Graipher的答案为基础,但使用pythons pathlib模块:

from pathlib import Path

files = ["a.txt", "b.txt"]
sorted(files, key=lambda f: float(Path(f).read_text()))
# ['b.txt', 'a.txt']