如何在Subprocess完成后删除文件/目录?

时间:2018-06-14 19:52:58

标签: python python-2.7 watchdog

我正在使用Watchdog来监控目录。如果添加了任何新目录,我想在这些“源”目录上启动子进程,并在将输出一些文件的目录上调用程序anon_local

我的问题是:在使用该目录完成子进程后,删除目录及其内容的优雅方法是什么?

class Handler(FileSystemEventHandler):
    @staticmethod
    def on_any_event(event):
        if event.is_directory and event.event_type == 'created':
            PATH = event.src_path
            proc = subprocess.Popen(["python2", "anon_local.py" , PATH, "-t", "target directory", "-csv", "arg", "-p", "arg"])  

1 个答案:

答案 0 :(得分:1)

可以使用shutilrmtree功能完成此操作。

只要PATH是您要删除的目录,只需检查以确保您的子流程已完成,然后运行shutil.rmtree(PATH)

如果您需要等到子流程完成,可以通过调用.poll()上的proc并等待它返回None来完成此操作。例如:

while proc.poll() == None:  # .poll() will return a value once it's complete. 
    time.sleep(1)
[then remove your directory here]