使用python将最近添加的.csv文件列表获取到目录中

使用python将最近添加的.csv文件列表获取到目录中,python,python-3.x,Python,Python 3.x,我有一个output files文件夹,其中所有文件都会被转储,我需要每五分钟检查一次该文件夹,并使用python提取最近添加的所有文件列表 一种方法是使用集合,并获取非相交文件,还有其他更好的方法吗 非常感谢其中的代码片段 感谢要解决此问题,您可以使用os模块中的特定方法listdir(),以及time模块中的sleep() import os from time import sleep path = "/path/to/folder/with/csv/files"

我有一个output files文件夹,其中所有文件都会被转储,我需要每五分钟检查一次该文件夹,并使用python提取最近添加的所有文件列表

一种方法是使用集合,并获取非相交文件,还有其他更好的方法吗

非常感谢其中的代码片段


感谢要解决此问题,您可以使用
os
模块中的特定方法
listdir()
,以及
time
模块中的
sleep()

import os
from time import sleep

path = "/path/to/folder/with/csv/files"

with open("log.txt", "a+") as log_file:
    while True:
        log_file.seek(0)
        existing = [f.strip() for f in log_file]

        csvs = [f for f in os.listdir(path) if f.endswith(".csv") and f not in existing]

        if len(csvs) > 0:
            print(f"Found {len(csvs)} new file(s):")
            for f in csvs:
                print(f)
            print("\n")
        else:
            print("Found 0 new files.")

        log_file.writelines([f"{f}\n" for f in csvs])

        sleep(300)
我们将把现有文件名存储在
.txt
文件中。您可以使用
.json
文件或您喜欢的任何其他文件类型。首先,我们使用
和/open
(在append/read模式下)打开文件,并获得以前存储在文本文件中的文件名列表。然后,我们将获得该目录中不在文件中的所有
.csv
文件的列表:

csvs = [f for f in os.listdir(path) if f.endswith(".csv") and f not in existing]
os.listdir()
is列出当前工作目录中的所有文件和文件夹

以下
if/else
语句仅用于输出目的,不是必需的。它只是说:如果发现了新的csv文件,请打印数量和每个文件的名称。如果没有找到,请打印找到的零

剩下要做的就是将新发现的文件名写入
.txt
文件,以便在下一次迭代中,它们将被标记为现有而不是新的:

log_file.writelines([f"{f}\n" for f in csvs])

最后一行,
sleep(300)
,使程序等待300秒或5分钟,然后再次迭代。

您可以检查文件的修改时间,也许……但实际上您的描述有些模糊。这是家庭作业还是现实问题?