2016-09-05 67 views
-1

從源目錄開始;以遞歸方式更改目錄中的文件名稱

< C:/用戶/公共/ env的防禦/項目/ 1_Earnings電話/季度收益電話/ 1_IOUs通過四分之一/ 2013 Q1/AAA完成/

有源目錄內多個子目錄;例如

< /用戶/公共/ env的國防/項目/ 1_Earnings電話/季度收益按季度電話/ 1_IOUs/2013 Q1/AAA完成/ AEP

/用戶/公共/ env的國防/項目/ 1_Earnings 2013年第一季度/第四季度的收益/ 1_IOU第一季度/ AAA完成/ Allete

在每個子目錄內有多個文件,

* 2013 Q1 AEP收入電話Transcript.txt

* 2013 Q1 AEP收入電話Transcript.txt

* 2013 Q1 ALLETE收入電話Transcript.docx

* 2013 Q1 AEP收入電話介紹.pdf'

我正在編寫一個腳本來遍歷子目錄並刪除一些常用詞。例如,我希望2013年第一季度AEP收益電話會議Transcript.txt將成爲2013年第一季度AEP.txt

我寫的腳本是; FileRename_V1.py

import os 
cwd = os.getcwd() 
print (' 1 Working Directory is  %s' %cwd) 
print (' ') 
sourcedir = '/Users/Public/Env Defense/Projects/1_Earnings Calls/Quarterly   Earnings Calls/1_IOUs by Quarter/2013 Q1/AAA Done' 
os.chdir (sourcedir) 
cwd = os.getcwd() 
print (' 2 Working Directory is  %s' %cwd) 
print (' ') 
for dirPath, subdirNames, fileList in os.walk (sourcedir): 
    for filename in fileList: 

    filename = os.path.join (dirPath, filename) 

    os.rename(filename,filename.replace("Earnings Call Transcript", '')) 

結果是以下錯誤消息;

回溯(最近通話最後一個): 文件 「FileRename_V1.py」,第29行,在 os.rename(文件名,filename.replace( 「收入電話抄本」, ''))

FileNotFoundError :[WinError 2]系統找不到指定的文件: '/ Users/Public/Env Defense/Projects/1_Earnings Calls/Quarterly Earnings Calls/1_IOUs 2013/Quarter Q1/AAADONE \ 2013 Q1 AEP Earnings Call Presentation.pdf' - >

'/ Users/Public/Env Defense/Projects/1_Earnings Calls/Quarterly Earnings Calls/1_IOUs 2013年第一季度/ 2013年第一季度/ 2013年第一季度AEP收益電話Presentation.pdf'

我已經研究了遞歸重命名文件的代碼,並且我寫的代碼看起來類似於工作的示例。任何關於問題是什麼以及如何糾正腳本的建議都將非常感謝。

乾杯,BobS

+0

不應該先通過所有文件,存儲所有需要重命名的文件,然後重命名它們中的每一個?重命名文件/目錄同時走他們聽起來有點棘手。 –

+0

您在文件路徑中混合了正斜槓和反斜槓: '/ Users/Public/Env Defense/Projects/1_Earnings Calls/Quarterly Earnings Calls/1_IOUs by 2013/Q1 Q1/AAA DONE \ AEP Earnings Call Presentation.pdf' – Andrew

+0

當os.rename遇到第一個子目錄中的第一個文件時,錯誤消息被拋出。 – RJS

回答

1

WinError是由文件路徑超過260個字符引起的。我編輯了目錄名稱以減少字符數量,腳本按預期工作。能夠快速編輯名稱非常有幫助,因爲我正在處理20個目錄,每個目錄包含大約40個子目錄,每個子目錄包含大約5個文件。幸運的是,有人發佈文件路徑長度的問題!

相關問題