天天看點

Python周遊目錄更換檔案名和目錄名

<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>' --&gt; '</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>' --&gt; '</code> <code>+</code> <code>pathdirLower)</code>

<code>        </code><code>os.rename(pathdir, pathdirLower)</code>

相關閱讀:

本文轉自walker snapshot部落格51CTO部落格,原文連結http://blog.51cto.com/walkerqt/1369880如需轉載請自行聯系原作者

RQSLT