使用python将最近添加的.csv文件列表获取到目录中
我有一个output files文件夹,其中所有文件都会被转储,我需要每五分钟检查一次该文件夹,并使用python提取最近添加的所有文件列表 一种方法是使用集合,并获取非相交文件,还有其他更好的方法吗 非常感谢其中的代码片段使用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"
感谢要解决此问题,您可以使用
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分钟,然后再次迭代。您可以检查文件的修改时间,也许……但实际上您的描述有些模糊。这是家庭作业还是现实问题?