2016-09-05 70 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个文件。幸运的是,有人发布文件路径长度的问题!

相关问题