1. 程式人生 > >python編寫文件統計腳本

python編寫文件統計腳本

os.path image utf 命令 pat 多級目錄 思路 讀取 pre

python編寫文件統計腳本

思路:用os模塊中的一些函數(os.listdir()、os.path.isdir()、os.path.join()、os.path.abspath()等)

實現功能:顯示多級目錄,以及自己要找的具體文件類型(例:以".py"結尾的文件),並讀取每個文件的第一行(一般為註釋說明,這樣就能大致了解這個文件是幹事什麽的)

先編寫二級目錄文件統計腳本

代碼如下:

#文件統計
os.chdir("F:\\pythonstudy")
for fp in os.listdir():
    if os.path.isdir(fp):
        print(os.path.join("
f:\\pythonstudy",fp)) for f in os.listdir(fp): if f.endswith(".py"): print("\t",os.path.abspath(f)) #打印f的絕對路徑 with open(fp+"\\"+f,encoding="utf-8") as f1: print("\t",f1.readline()) #讀取第一行

運行效果如下:

技術分享圖片

如何實現多級目錄中文件的統計呢,這裏用函數的遞歸調用方式來實現

代碼如下:

#文件統計
def sfile(dir,layer=1):
    print("  "*(layer-1)+dir)   
    for fp in os.listdir(dir):
        nf=os.path.join(dir,fp)
        if os.path.isdir(nf):
            sfile(nf,layer+1)
        else:
            if nf.endswith(".py"):  #統計以".py"結尾的文件
                print("  "*layer+nf,end="
\t"*(5-layer))  #layer是為了美觀,對整齊
layer是
為了美觀,layer是 with open(nf,encoding="utf-8") as f1: print(f1.readline().strip()) sfile("f:\\sss")

運行效果如下:

技術分享圖片

上圖可以看到實現了多級目錄中統計".py"結尾的文件,並打印出每個文件的第一行。

如果想統計圖片只需要簡單的修改就好

def sfile(dir,layer=1):
    print("  "*(layer-1)+dir)   
    for fp in os.listdir(dir):
        nf=os.path.join(dir,fp)
        if os.path.isdir(nf):
            sfile(nf,layer+1)
        else:
            if nf.endswith(".jpg"):
                print("  "*layer+nf,end="\t"*(5-layer))
           
sfile("f:\\sss")

運行效果如下:

技術分享圖片

註:想統計整個盤符下的某種文件類型,命令提示符(cmd)需要管理員權限,不然會提示拒絕訪問

!!!!未解決問題:如何實現統計"F盤"中所有的jpg文件,但不顯示(打印)目錄中沒有jpg文件的路徑,只顯示目錄中有jpg文件的路徑

本人腦袋要爆炸了,實在想不出,有想法的博友,給點意見

python編寫文件統計腳本