2016-03-03 78 views
0

我試圖通過在其舊文件名之前添加數字(例如"Oldfilename"應該命名爲"1. Oldfilename")來命令目錄中的所有文件。Python重命名()PermissionError:[WinError 32]?

import os 
i=0 
def OrderFile(x): 
    ListOfFile=os.listdir(x) 
    for file in ListOfFile: 
     global i 
     filepath=os.path.join(x,file) 
     file=str(i)+'. '+file 
     newfilepath=os.path.join(filepath,file) 
     i=i+1 
     os.rename(filepath,newfilepath) 

但我得到一個錯誤:

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 
'D:\\baiduyundownload\\Tempo\\Active\\Learning\\Sleep.PNG' ->  
'D:\\baiduyundownload\\Tempo\\Active\\Learning\\Sleep.PNG\\1.Sleep.PNG' 
  1. ...我已經尋找了重命名(文件),但沒有什麼是有幫助的。
  2. 此外,我搜索了一打類似的問題,我知道我要重命名的文件必須在我執行重命名函數之前打開。
  3. 唯一可能與打開文件有關的可疑行爲是'for'循環,但後來我發現foor循環給我的元素是str類型。
  4. 此外,我試圖通過手動設置'src'和'dst'重命名上面的文件,它工作得很好。所以文件本身與錯誤無關。
  5. 那麼,我就卡住了。

回答

3

filepath已經包含文件名了。你想重命名x\file不是filepath\file

import os 
i=0 
def OrderFile(x): 
    ListOfFile=os.listdir(x) 
    for file in ListOfFile: 
     global i 
     filepath=os.path.join(x,file) 
     file=str(i)+'. '+file 
     newfilepath=os.path.join(x,file) 
     i=i+1 
     os.rename(filepath,newfilepath)