【发布时间】:2013-08-29 10:08:46
【问题描述】:
我已使用以下代码删除 USB 设备上的一棵树,但是我收到了 OSError:
我还使用 sudo python 运行了代码。
导入关闭
导入操作系统
src = "/media/device/my_folder"
如果 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'
所以我猜我需要先更改文件夹及其文件的权限,然后才能删除它们?
【问题讨论】:
-
可能您没有删除权限。显示完整的回溯。
-
@Denis 让我现在为您获取回溯。
-
嗯。只读文件系统通常意味着驱动器挂载了 'ro' 标志,或者它已经挂载了仅针对特定用户的写权限。您应该检查您是否可以在使用运行 python 脚本的用户登录时使用触摸将文件写入驱动器。
-
好的,又更新了。对文件使用触摸后,我重新运行了脚本,它运行良好!我可能只是遍历文件夹并使用来自子进程的调用来触摸所有文件(除非有更好的方法从 python 调用触摸)。然后运行 shutil.rmtree。
-
好的,我有一个解决方案,但由于我的声誉,我不能再发布 8 小时。我会尽快发布。
标签: python linux usb usb-drive shutil