用Python提取檔案夾下的特定副檔名的檔案
不知道什麼時候,網閑著沒用,掛了個linux的視屏教程,裡面有很多個檔案夾,有很多無關的檔案。這對於像我沒收藏垃圾檔案癖好的人來說,簡直是不能忍的。所以當時就打算自己手動一個一個提取出來,歸到了某個檔案夾。無奈檔案實在太多了,實在沒那份閑情,一個一個去提取。所以就打算寫個VC的小程式,當時寒假在家裡,對著那一大堆的windows API,還是一堆English的函數描述,頓時把我興趣給打沒了。確實是自己比較懶,靜不下心來專研。
這幾天,在學習Boost庫,發現裡面有個為python寫的字型檔,頓時燃起我學期Python的慾望,主要是想看看把這兩門語言結合起來用會有什麼優勢。Google了一下,都說python核心編程還不錯,但翻譯的品質不怎麼行。記得以前在某個大牛的部落格上看到過,翻譯品質不好的,寧可不看,去看原版書。所以我便傻乎乎的跑去amazon網站上面,找了一門五星級的書,<<Beginning Python Using Python 2.6 and Python 3.1 - James W. Payne>>,列印出來,開始了我的Python之旅。
幸好以前MSDN看多了,英語還算勉強過得去,再加上Google強大的翻譯在,怕啥啊。一口氣把基本文法看完了,覺得很奇怪,怎麼文法才200頁不到啊,200頁不到也能把基本類型,函數,異常,類,OOP,都講完。這跟我以前看C++差距也太大了吧。C++那文法,真是能把你折磨死啊。後來又找同學借了本python核心編程,發現那邊的文法講的詳細多了。
所以這幾天轉戰那本書。
說了那麼多,還是迴歸主題吧。這個程式其實很簡單,不用Regex(確實是個好東西,Boost使C++也支援regular expressions 了,呵呵,只是我還沒開始學習)的話,也很容易。不羅嗦了,看程式吧
view plaincopy to clipboardprint?
01."""
02. This module is to copy file with the specific extension from one directory
03. to the specific directory
04."""
05.
06.import os
07.import shutil
08.
09.def file_extension(fromPath,extension,toPath):
10. if os.path.isdir(fromPath):
11. fileAll = os.listdir(fromPath)
12. for each in fileAll:
13. absolutePath = os.path.join(fromPath,each)
14. if os.path.isdir(absolutePath):
15. file_extension(absolutePath,extension,toPath)
16. else:
17. if absolutePath.endswith(extension):
18. print absolutePath
19. shutil.copy(absolutePath,toPath)
20. else:
21. print "please input correct path!!!"
"""
This module is to copy file with the specific extension from one directory
to the specific directory
"""
import os
import shutil
def file_extension(fromPath,extension,toPath):
if os.path.isdir(fromPath):
fileAll = os.listdir(fromPath)
for each in fileAll:
absolutePath = os.path.join(fromPath,each)
if os.path.isdir(absolutePath):
file_extension(absolutePath,extension,toPath)
else:
if absolutePath.endswith(extension):
print absolutePath
shutil.copy(absolutePath,toPath)
else:
print "please input correct path!!!"
不用我注釋了吧,相當簡單。
才開始學習python,這個代碼寫的一定很醜,以後再回來改吧。
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/ruanmengkai/archive/2010/05/06/5564243.aspx