递归更改目录

时间:2016-09-05 11:59:08

标签: python recursion

从源目录开始;

< C:/ Users / Public / Env Defense / Projects / 1_Earnings Calls / Quarterly Earnings Calls / 1_IOUs by Quarter / 2013 Q1 / AAA Done /

源目录中有多个子目录;例如

< / Users / Public / Env Defense / Projects / 1_Earnings Calls / Quarterly Earnings Calls / 1_IOUs by Quarter / 2013 Q1 / AAA Done / AEP

/用户/公共/环境防御/项目/ 1_Earnings呼叫/季度收益呼叫/ 1_IOUs按季度/ 2013 Q1 / AAA DONE / Allete

在每个子目录中都有多个文件,其名称中包含常用单词,例如;

* 2013年第一季度AEP收益调用Transcript.txt

* 2013年第一季度AEP收益调用Transcript.txt

* 2013年Q1 ALLETE收益调用Transcript.docx

* 2013年第一季度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行,in     os.rename(filename,filename.replace(“Earnings Call Transcript”,''))

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

'/ Users / Public / Env Defense / Projects / 1_Earnings Calls / Quarterly Earnings Calls / 1_IOUs by Quarter / 2013 Q1 / AAA DONE \ 2013 Q1 AEP Earnings Call Presentation.pdf'

我已经研究了递归重命名文件的代码,我写的代码看起来类似于有效的例子。关于问题是什么以及如何纠正脚本的任何建议都将不胜感激。

干杯,BobS

1 个答案:

答案 0 :(得分:1)

WinError是由文件路径超过260个字符引起的。我编辑了目录名称以减少字符数,并且脚本按预期工作。能够快速编辑名称是非常有帮助的,因为我正在使用20个目录,每个目录包含大约40个子目录,每个子目录包含大约5个文件。幸运的是有人发布文件路径长度的问题!!