簡體   English   中英

如何遍歷目錄中的子目錄並計算python中子目錄中的文件

[英]How to iterate through subdirectories in a directory and count the files in the subdirectories in python

我想遍歷目錄中的子目錄並獲取每個子目錄中的文件數。 我的(混亂)解決方案如下所示:

import os, sys
import subprocess

def Count_files_in_subd():

    for root, dirs, files in os.walk("/Path/to/directory", topdown=False):
        for name in dirs:
            print name
            f = os.path.join(root, name)
            os.chdir(f)
            i=0
            for filename in os.listdir(os.getcwd()):
                i+=1
            print i


Count_files_in_subd()

該腳本首先依次查看目錄中的子目錄,然后更改為“查看”目錄,以計算其中的文件。

它可以工作,但是我知道在python中有更好的方法。 我在SO上研究了不同的問題,但是當我嘗試大多數解決方案時,每個子目錄的文件數僅為一個,並且我假設該目錄被視為文件。 任何有關如何更好地做到這一點的幫助將不勝感激。

您可以按如下所示重新編碼以顯示每個文件夾中的文件數:

import os

def Count_files_in_subd():
    for root, dirs, files in os.walk("/Path/to/directory"):
        print "{} in {}".format(len(files), root)

Count_files_in_subd()

root包含當前要移動的文件夾,而files已經擁有該文件夾中的所有文件,因此您只需計算len(files)

dirs包含在當前文件夾中找到的所有文件夾(將在下一步訪問)。 如果您不想訪問某個文件夾,則可以將其從此列表中刪除。

這將為您提供以下輸出:

5 in /Path/to/directory
10 in /Path/to/directory/folder_1
3 in /Path/to/directory/folder_1/deeper

您可以在bash中執行此操作,它不是很干凈,但是通過遞歸列表,您可以確保遍歷每個目錄。

ls -lR|while read i ; do J=$(echo $i|awk '{print $1}'|grep d|wc -l); echo     $J; if [ $J -gt 0 ]; then echo "GREATER"; fi done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM