我已使用以下代码删除 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/