如何在Python中删除本地文件夹的内容?
目前的项目适用于Windows,但我也希望看到*nix.
考虑以下用于清理目录的 python 函数:
def cleanDir(path):
shutil.rmtree(path)
os.mkdir(path)
Run Code Online (Sandbox Code Playgroud)
在 Windows 上(实际在 Windows7 和 Windows10 上使用 python 2.7.10 和 3.4.4 进行测试),当使用 Windows 资源管理器同时导航到相应目录时(或者仅在左侧树窗格中导航到父文件夹时),可能会引发以下异常:
Traceback (most recent call last):
...
File "cleanDir.py", line ..., in cleanDir
os.mkdir(path)
PermissionError: [WinError 5] Access is denied: 'testFolder'
Run Code Online (Sandbox Code Playgroud)
该问题已在本期报告过。但没有进一步分析,并且给出的使用 sleep 的解决方案并不令人满意。根据下面 Eryk 的评论,当前的 python 版本(即 python 3.8)也会出现相同的行为。
注意,shutil.rmtree返回无异常。但尝试立即再次创建该目录可能会失败。(重试大多数情况下都会成功,请参阅下面的完整测试代码。)并请注意,您需要在 Windows 资源管理器中的测试文件夹的左侧和右侧单击,以强制解决问题。
问题似乎出在 Windows 文件系统 API 函数中(而不是在 Pythonos模块中):当 Windows 资源管理器具有相应文件夹的句柄时,已删除的文件夹似乎不会立即“转发”到所有函数。
import os, shutil
import time
def populateFolder(path):
if os.path.exists(path):
with open(os.path.join(path,'somefile.txt'), 'w') as …Run Code Online (Sandbox Code Playgroud)