對於昨天那個問題一直戀戀不忘,自己寫的總歸太淺了。今天在網上無意中發現,python中有提供現成的模塊遍歷文件目錄。當時看到就興奮了,這不是解決了我的一個大問題麼!網上的代碼如下:
import os import os.path rootdir='./test/' print "***********" for parent,dirnames,filenames in os.walk(rootdir): print "&&&&&&&&&&&&&&" for dirname in dirnames: print "parent is:"+parent print "dirname is"+dirname for filename in filenames: print "parent is:"+parent print "filename is:"+filename print "the full name of the file is:"+os.path.join(parent,filename)
中間我通過print一些字符來摸清了這個循環的過程。有了這個循環等於我不用做任何事,只要考慮文件名是否符合需要就行了~瞬間有種自己前兩天弱爆了的感覺
下面是改進後的代碼:
import os import os.path rootdir='./test/' out=open('names.txt','w') for parent,dirnames,filenames in os.walk(rootdir): print "**********" for name in filenames: if '.txt'==name[-4:]: out.write(name[:-4]+'\n') elif '.jpg'==name[-4:]: out.write(name[:-4]+'\n') elif '.rm'==name[-3:]: out.write(name[:-3]+'\n') else: continue for dirname in dirnames: out.write('*********\n')
改進後的程序能遍歷指定目錄下的所有文件並提取指定後綴名的文件名存儲到names.txt中,突破了昨天只能有兩級目錄的限制,這樣還是有實際意義的,比如說我可以用它來獲取某個目錄下某種特定類型的所有文件名。當然我前兩天做的不好的就是遍歷工作,python標準庫中是提供了類似的功能的,從這我也體會到了腳本語言的方便之處啊。