相关疑难解决方法(0)

如何在Python中删除文件夹的内容?

如何在Python中删除本地文件夹的内容?

目前的项目适用于Windows,但我也希望看到*nix.

python file

410
推荐指数
18
解决办法
44万
查看次数

在 Windows 上成功使用 shutdown.rmtree 后,os.mkdir 可能会失败并出现 PermissionError

考虑以下用于清理目录的 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)

python windows

2
推荐指数
1
解决办法
838
查看次数

标签 统计

python ×2

file ×1

windows ×1