2013-08-29 39 views
1

刪除樹在USB設備上我用下面的代碼到USB設備上刪除樹但是我收到一個OSERROR:在Python

我也跑使用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' 

所以我猜我需要更改文件夾的權限,它是我以前的文件中刪除呢?

+0

也許您沒有刪除權限。顯示完整的追溯。 – Denis

+0

@Denis現在讓我爲你回溯。 – Cephlin

+0

嗯。只讀文件系統通常意味着該驅動器使用'ro'標誌進行掛載,或者僅對特定用戶使用寫入權限進行掛載。您應該檢查是否可以在運行python腳本的用戶登錄時使用touch將文件寫入驅動器。 –

回答

0

如果我在嘗試使用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)