根据特定顺序从文件中读取文件



我有一个包含15个文件的文件,它们的名称分别从1到15。我使用以下代码读取特定目录中的所有文件:

files_path = [os.path.abspath(x) for x in os.listdir()]

但是它读取从1到15,然后从2到9命名的文件。它是一种将文件分别读取为1,2,3,。。。,15?

谢谢。

您的两个问题实际上是相互关联的。

为了用"0"对CCD_ 1的输出进行排序;天然的";数字排序顺序,您需要该函数来提取数字。然后可以将该函数用作sorted()(或list.sort()(的key函数参数。

见下文;我有一个模拟listdir(),因为我没有这些文件,但您自然会在自己的代码中使用自己的os.listdir()

import os

def listdir():
return sorted(fr"C:/output5000k/{x}.mp4" for x in range(1, 16))

def get_file_number(path: str) -> int:
basename = os.path.basename(path)
filename, ext = os.path.splitext(basename)
return int(filename)

print(sorted(listdir(), key=get_file_number))

这会打印出

['C:/output5000k/1.mp4', 'C:/output5000k/2.mp4', 'C:/output5000k/3.mp4', 'C:/output5000k/4.mp4', ...]

正如预期的那样。

最新更新