删除目录中的文件/删除非空的某个目录

时间:2018-06-05 02:51:12

标签: python

我正在创建一个登录系统,我想在重新启动系统时重置信息。我已将我的信息存储在名为accounts的目录中的文本文件中。 data/accounts目录中有文本文件和子目录。

我认为我可以使用os.remove,但它不起作用。到目前为止,我已经尝试过了。

import os

def infoReset():
    os.remove("data/accounts/")

但它只是给了我一个"operation not permitted"错误。如何删除data/accounts目录及其内容?

2 个答案:

答案 0 :(得分:2)

考虑使用TemporaryDirectory,它将在您完成后自动删除。这可以防止与手动相关的错误以及可能不安全的目录管理。

根据documentation

  

完成上下文或销毁临时目录对象后,新创建的临时目录及其所有内容将从文件系统中删除。

     

可以从返回对象的name属性中检索目录名称。当返回的对象用作上下文管理器时,该名称将被分配给with语句中as子句的目标(如果有)。

     

可以通过调用cleanup()方法显式清理目录。

这是一个适用于您的用例的简略示例:

import tempfile

# At the beginning of your program, create a temporary directory.
tempdir = tempfile.TemporaryDirectory()

...

# Later, remove the directory and its contents.
tempdir.cleanup()

或者,根据项目的可行性,使用上下文管理器。

import tempfile

with tempfile.TemporaryDirectory() as tmpdirname:
    # Write files in the directory...
    # ...

    # As soon as your exit this block, the directory is automatically cleaned up.

答案 1 :(得分:0)

os.remove()用于文件,而不是目录。 os.rmdir()用于删除目录,但仅用于删除目录。要删除目录及其内容,请使用shutil.rmtree()

import shutil

def infoReset():
    shutil.rmtree("data/accounts/")