2014-04-23 27 views
1
Documents = ['*pdf', '*docx', '*txt'] 

for i in range(len(Documents)): 
    if glob.glob(Documents[i]): 
     print(Documents[i], True) 
     shutil.move(glob.glob(Documents[i])[0], '/home') 

    else: 
     print(Documents[i], False) 

好了,一切都很大,直到:shutil.move(SCR,DST)讓我IO錯誤:[錯誤13]許可被拒絕和3個錯誤

shutil.move(glob.glob(Documents[i])[0], '/home') 

這基本上是:

shutil.move(scr, dst) 

而產生錯誤:

*pdf False 
*docx True 
Traceback (most recent call last): 
    File "/usr/lib/python3.2/shutil.py", line 326, in move 
    os.rename(src, real_dst) 
OSError: [Errno 13] Permission denied 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "teste.py", line 19, in <module> 
    shutil.move(glob.glob(Documents[i])[0], '/home') 
    File "/usr/lib/python3.2/shutil.py", line 334, in move 
    copy2(src, real_dst) 
    File "/usr/lib/python3.2/shutil.py", line 146, in copy2 
    copyfile(src, dst) 
    File "/usr/lib/python3.2/shutil.py", line 99, in copyfile 
    with open(dst, 'wb') as fdst: 
IOError: [Errno 13] Permission denied: '/home/jesus.docx' 

我使用嘗試scr和dst都是絕對路徑,並沒有奏效。我瀏覽了網頁,發現它可能與權限有關,但是如果我必須更改權限,它將打敗腳本的目的,這就是爲什麼我會在進入權限之前嘗試尋找幫助。

那麼,我該怎麼做?

我的目的是在Linux用戶目錄中移動文件。 (根據文件格式對其進行排序..)... ex-> .jpg - >圖片,.pdf - >文檔等。 (這就是爲什麼我不能有許可事情硬化生活...)

另外我是一個新手在編程(只是讓你們不要非常geeky:D) 而且,這也是我的在這個社區的第一個問題,所以請耐心點,如果我聽起來丟失或癱瘓?謝謝

回答

2

你試圖寫入文件到/home目錄。你不應該那樣做。

Linux是一個多用戶操作系統。 /home是您的所有用戶主目錄生活的地方。每個用戶應該有自己的目錄/home。例如,您的可能是/home/Joao

變化,從該行

shutil.move(glob.glob(Documents[i])[0], '/home') 

shutil.move(glob.glob(Documents[i])[0], '/home/your_username') 

最後一個參數這裏有一個一般的改進建議:

# Variable names are lower case 
documents = ["*.pdf", "*.docx", "*.txt"] 
# You iterate over a for loop like this. Python's for is like for-each. You get the actual item. 
for doc in documents: 
    if glob.glob(doc): 
     shutil.move(glob.glob(doc)[0], '/home/your_username/Documents') 
+0

哦,我覺得自己很蠢。謝謝。 –

+0

很高興爲您服務! – msvalkon

+1

只是想增加一個額外的感謝你的東西額外的提示。 –

1

您希望運行腳本的用戶能夠使用提升的權限運行腳本。有一個叫做setuid位(set user id)的東西,當它被設置時,它將與擁有者的權限一起運行腳本。還有一個setgid(set group id)位。

對其進行設置,root用戶,執行:

chown root scriptname 
chmod ug+s scriptname 

這同時設置了setuid位和setgid位。

http://en.wikipedia.org/wiki/Setuid

相關問題