<code>#encoding: utf-8</code>
<code>#author: walker</code>
<code>#date: 2014-03-07</code>
<code>#summary: 深度遍历指定目录,并将子目录和文件名改为小写</code>
<code>#注意,此程序只针对windows,windows下文件(夹)名不区分大小写</code>
<code>import</code> <code>os</code>
<code>import</code> <code>os.path</code>
<code>import</code> <code>shutil</code>
<code>#读入指定目录并转换为绝对路径</code>
<code>rootdir </code><code>=</code> <code>raw_input</code><code>(</code><code>'root dir:\n'</code><code>)</code>
<code>rootdir </code><code>=</code> <code>os.path.abspath(rootdir)</code>
<code>print</code><code>(</code><code>'absolute root path:\n*** '</code> <code>+</code> <code>rootdir </code><code>+</code> <code>' ***'</code><code>)</code>
<code>#先修改文件名</code>
<code>for</code> <code>parent, dirnames, filenames </code><code>in</code> <code>os.walk(rootdir):</code>
<code> </code><code>for</code> <code>filename </code><code>in</code> <code>filenames:</code>
<code> </code><code>pathfile </code><code>=</code> <code>os.path.join(parent, filename)</code>
<code> </code><code>pathfileLower </code><code>=</code> <code>os.path.join(parent, filename.lower())</code>
<code> </code><code>if</code> <code>pathfile </code><code>=</code><code>=</code> <code>pathfileLower: </code><code>#如果文件名本身就是全小写</code>
<code> </code><code>continue</code>
<code> </code><code>print</code><code>(pathfile </code><code>+</code> <code>' --> '</code> <code>+</code> <code>pathfileLower)</code>
<code> </code><code>os.rename(pathfile, pathfileLower)</code>
<code> </code>
<code>#后修改目录名,这里注意topdown参数。</code>
<code>#topdown决定遍历的顺序,如果topdown为True,则先列举top下的目录,然后是目录的目录,依次类推;</code>
<code>#反之,则先递归列举出最深层的子目录,然后是其兄弟目录,然后父目录。</code>
<code>#我们需要先修改深层的子目录</code>
<code>for</code> <code>parent, dirnames, filenames </code><code>in</code> <code>os.walk(rootdir, topdown</code><code>=</code><code>False</code><code>):</code>
<code> </code><code>for</code> <code>dirname </code><code>in</code> <code>dirnames:</code>
<code> </code><code>pathdir </code><code>=</code> <code>os.path.join(parent, dirname)</code>
<code> </code><code>pathdirLower </code><code>=</code> <code>os.path.join(parent, dirname.lower())</code>
<code> </code><code>if</code> <code>pathdir </code><code>=</code><code>=</code> <code>pathdirLower: </code><code>#如果文件夹名本身就是全小写</code>
<code> </code><code>print</code><code>(pathdir </code><code>+</code> <code>' --> '</code> <code>+</code> <code>pathdirLower)</code>
<code> </code><code>os.rename(pathdir, pathdirLower)</code>
相关阅读:
本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1369880如需转载请自行联系原作者
RQSLT