0

我知道如何在 Python 中使用tempfile.

我有一个封装用户环境的类。我还有一个单元测试,它创建一个临时的虚拟用户环境并用一些用于测试的文件填充它。完成此操作后,我想清理所有内容,从而从该虚拟用户目录中删除所有内容(使用shutils.rmtree

我有一个包装原始类的虚拟类,它阻止它获取真正的用户目录并返回虚拟类。虽然我担心有人可能会忘记这一点,可能会改变它或完全删除包装类。这可能会奏效,开发人员最终会丢失他/她的主目录中的所有内容。虽然这可能会给他/她一个很好的教训,但这是不可接受的。

我可以检查 '/tmp/' 是否位于用户主页的路径开头,以便我知道删除它是安全的,但这不适用于 Windows。由于 tempfile 已经知道如何创建目录,它还能够判断目录是否在临时区域中。虽然我不知道该怎么做。

有任何想法吗?

4

1 回答 1

3

这是tempfile.gettempdir()为了什么。

但是,您可能需要重新考虑如何表示“主目录”是一个临时的仅测试设置。您可以添加一个额外的文件(.this-is-a-test-homedir或类似文件),使用明确的“临时”用户名。

或者,更好的是,完全删除虚拟包装器并让测试在运行测试之前创建临时用户目录,然后在拆除测试时清理它。

于 2012-11-05T13:30:31.410 回答