有没有一种方法可以在不获取所有文件名的情况下获取目录中N个最早的文件名(python或shell中首选)

2024-09-30 08:25:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用下面的代码获取目录中的json文件名

import glob
jsonFiles = glob.glob(folderPath+"*.json")

每秒会在目录中创建许多新的json文件(比如100/s)。通常它可以正常工作,但当文件数量很大(约150000个)并且检索文件名需要很长时间(3-4分钟)时,它就会卡住。这可能是因为传入率高(不确定)

是否有其他方法可以使用python或linux命令高效地获取文件名。 获取最旧的1000个文件名也可以。我不需要同时使用所有文件名

我遇到了以下shell命令:

ls -Art | head -n 1000

会有帮助吗?它是否首先列出所有文件名,然后检索1000条最早的记录?提前谢谢


Tags: 文件方法代码import命令目录json数量
1条回答
网友
1楼 · 发布于 2024-09-30 08:25:05

发现scandir有用

# Python version 2.x
import scandir
ds = scandir.scandir('./files/')
fileNames = []
count=0
for file in ds:
    count+= 1
    fileNames.append(file.name)
    if count==1000:
        break

# Python version 3.x
import os
ds = os.scandir('./files/')
...

这将在目录中提供1000个随机文件名,而不查看所有文件名。如果我们不打破循环,它将继续以随机顺序提供文件名(文件名一旦给出就不会重复)

相关问题 更多 >

    热门问题