2014-07-25 83 views
1

我一直在爲一個程序工作了幾天,而且自從昨晚以來我一直在出錯。我已經在這裏查看了其他問題,但似乎沒有任何工作。 我正從1個驅動器的文件到另一個使用shutil,並在一開始它的工作,但現在它開始說這個錯誤:錯誤5:在python中移動文件時訪問被拒絕

編輯:只注意到它實際上移動的文件,之後它給我的錯誤

Traceback (most recent call last): 
    File "C:\Users\DC\Desktop\Prototype\Prototype", line 9, in <module> 
    shutil.move(src, dst) 
    File "C:\Python27\lib\shutil.py", line 300, in move 
    rmtree(src) 
    File "C:\Python27\lib\shutil.py", line 256, in rmtree 
    onerror(os.rmdir, path, sys.exc_info()) 
    File "C:\Python27\lib\shutil.py", line 254, in rmtree 
    os.rmdir(path) 
WindowsError: [Error 5] Access is denied: 'E:' 

這是我的代碼片段。

import os 
import time 

time = time.strftime("%H%M%S") 
src = "E:" 
dst = "C:\Users\DC\Desktop\Data_" + str(time) 

import shutil 
shutil.move(src, dst) 
print 'Done' 
+0

也許你應該檢查一下:http://stackoverflow.com/questions/3005437/windowserror-error-5-access-is-denied第一。 – TheDarkTurtle

+0

DarkTurtle,感謝您的評論,但我已經看到了,並不能得到任何進一步.. – user2340383

回答

0

請檢查權限爲E:\

錯誤顯示,運行此代碼段的用戶無權訪問E驅動器。

+1

我正在從,有文件,並手動我可以移動一切在那裏..這就是爲什麼我沒有真正得到它:/ – user2340383

1

您是否試圖從E:或驅動器本身移動文件? :-)

檢查E:變頻器是否爲空,如果這意味着沒有任何動作。如果要移動文件,而不是驅動器,請使用通配符。

提示:E:\*.*

UPDATE:

麗努82在你引用除外shutil.py似乎做簡單的系統調用open

with open(src, 'rb') as fsrc: 

看來它不能處理Windows驅動器或像e:\\*.*

fo = open(r'D:\*.*','rb') 

D:\>python testopen.py 
Traceback (most recent call last): 
    File "testopen.py", line 2, in <module> 
    fo = open(r'D:\*.*','rb') 
IOError: [Errno 22] invalid mode ('rb') or filename: 'D:\\*.*' 

但是,對於您來說,一個非常簡單的解決方法就足夠了:os.listdir

>>> import os 
>>> os.listdir('D:\\') 
['Videos', 'Pictures', 'Music', 'Documents', ...] 

os.listdir返回文件和顯示目錄列表在特定目錄或Windows驅動器。一旦你有一個清單,請做每個項目的shutil.move

+0

我正在移動,並有文件,手動我可以將所有內容移動..這就是爲什麼我沒有真正得到它 – user2340383

+0

@ user2340383按照約翰的答案嘗試在驅動之後使用通配符「*」。 – TheDarkTurtle

+0

我無法訪問這樣的Windows機器,所以我只能推測:shutil.move(src)試圖移動'E:'路徑,因爲這是你給它的。如果裏面有文件,它可能會移動文件。但現在這是空的,它試圖移動'E:',顯然它不能移動驅動器本身。因此錯誤。嘗試像「E:\\ *。*' – LetMeSOThat4U

相關問題