python - 在 Python 中删除 USB 设备上的树

标签 python linux usb usb-drive shutil

我已使用以下代码删除 USB 设备上的一棵树,但我收到了 OSError:

我还使用 sudo python 运行了代码。

import shutil

import os

src = "/media/device/my_folder"

if os.path.exists(dst):

shutil.rmtree(dst)

我刚刚在另一个脚本中使用 shutil.copytree(src, dst) 首先将文件写入设备。然而,USB 设备在复制过程中被移除,这可能是我遇到的问题的原因,因为除了复制一半的文件外,所有其他文件都已被移除。

我得到以下回溯:

Traceback (most recent call last):
  File "writetousb/tests/deleteTest.py", line 32, in <module>
    shutil.rmtree(src)
  File "/usr/lib/python2.7/shutil.py", line 252, in rmtree
    onerror(os.remove, fullname, sys.exc_info())
  File "/usr/lib/python2.7/shutil.py", line 250, in rmtree
    os.remove(fullname)
OSError: [Errno 30] Read-only file system: '/media/device/21823/21916.jpg'

所以我猜我需要在删除文件夹及其文件之前更改它们的权限?

最佳答案

如果我在尝试使用 shutil.rmtree 之前使用 chmod 正确设置权限,那么它应该可以工作。我将对此进行测试,并在我知道它有效时提供更新。

我可以确认解决方案有效。

import shutil
import os

src = "/media/device/my_folder"

if os.path.exists(dst):
    os.chmod(dst, 0o777)
    for root,dirs,_ in os.walk(dst):
        for d in dirs :
            os.chmod(os.path.join(root,d) , 0o777)
    shutil.rmtree(dst)

关于python - 在 Python 中删除 USB 设备上的树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18508038/

相关文章:

c# - 在 C# 中发现串行端口

linux - 如何在 linux ubuntu server 12.04 中用一个命令重命名多个前缀文件名

android - 如何让 USB 电阻式触摸屏在 Android 上工作。

c - 当传输大小大于最大数据包大小时,WinUSB Bulk IN 传输失败

python - Python 中的相对导入

php - 如何在 PHP 中与 PKCS#11 兼容的 HSM 设备交互

linux - 哪个 Linux 发行版适用于 Rails 开发?

python - 从抽象类继承时如何避免重复参数定义?

python - 分类器对 opencv 人脸检测器的信心

python Socket.IO 客户端,用于向 TornadIO2 服务器发送广播消息