当目录中的所有txt文件都包含一些文本时结束循环

2024-04-19 22:01:33 发布

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

我有一些子进程正在运行,stdout txt文件位于output文件夹中。 我想通过循环输出文件夹中的所有文件来等待所有子进程,如果它们在stdout txt文件中写入的进程中始终有“exit”字符串,那么它们就会一直在末尾。 谢谢你的帮助

这就是我得到的:

    for file in glob.glob("filename*.txt"):
        with open(file, "r").read() as f:
            if "exit" in f:
                break

但当其中一个文件退出时,它就会中断。 如果开始时出错,应该是一个好的解决方案吗?而不是中断放继续


Tags: 文件字符串intxt文件夹foroutput进程
1条回答
网友
1楼 · 发布于 2024-04-19 22:01:33

你需要循环直到你的条件得到满足。您可以在while True:循环中使用break来实现这一点

file_names = glob.glob("/tmp/foo*.txt")
while True:
    if not file_names:
        break
    for file_name in file_names:
        with open(file_name, "r") as f:
            if "exit" in f.read():
                file_names.remove(file_name)

这里它进入一个无限循环,只有当file_names变量为空时才会退出。如果它不是空的,它将在该变量上循环,打开并读取文件。如果文件包含“exit”,则从列表中删除该文件名

您可能需要考虑执行time.sleep,这样就不会对文件系统进行破坏,但这取决于您预期的等待时间。也可能是暂停

相关问题 更多 >