スナックelve 本店

バツイチ派遣40代女性の日記です

あばうとー  読者になる  follow us in feedly

フォルダごとのファイル数、Python3で数えようぜー

[ python ] 特定ディレクトリ以下のファイル数を調べる – memlog
をやってみようと思ったら
os.walk関数を使ってファイル数を列挙する | blog.PanicBlanket.com
使った方が楽そう!

ってなわけで

import os
import sys

if(len(sys.argv) == 1):
    myStr = input("検索したいパス: ")
else:
    myStr = sys.argv[1]

if(not os.path.isdir(myStr)):
    print("フォルダを入力してください")
    sys.exit()

tableStr = '<table>'
tableStr += '<tr><th>パス</th><th>ファイルの数</th></tr>\n'
for root, dirs, files in os.walk(myStr):
    tableStr += f'<tr><td><a href="{root}">{root}</td>'
    tableStr += f'<td>{len(files)}</td></tr>\n'

html = f"""
    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="utf-8">
    </head>
    <body>
    {tableStr}
    </body>
    </html>
    """
f = open('ファイルカウント.html', 'wb')
f.write(html.encode('utf-8'))
f.close()

これで、実行したフォルダに「ファイルカウント.html」ができてるはず
コピペの都合で一応パラメータでも指定できるようにした!

for root, dirs, files in os.walk(myStr):

が難しいよぉぉ。コピペ以外で思いつかないw
Python3 入門:for文 list ,dict ,zip ,enumerate , - hirhirの日記
読んで2つまではわかるんだよ。インデックスと値。

この3つはインデックスでも値でもねぇ気がすっぞ(;´Д`)
もうチョット勉強しまする・・・。

アウトプット

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="utf-8">
    </head>
    <body>
    <table><tr><th>パス</th><th>ファイルの数</th></tr>
<tr><td><a href="c:\test">c:\test</td><td>0</td></tr>
<tr><td><a href="c:\test\test(1)">c:\test\test(1)</td><td>1</td></tr>
<tr><td><a href="c:\test\test(10)">c:\test\test(10)</td><td>10</td></tr>
<tr><td><a href="c:\test\test(10)\test(1)">c:\test\test(10)\test(1)</td><td>1</td></tr>
<tr><td><a href="c:\test\test(10)\test(2)">c:\test\test(10)\test(2)</td><td>2</td></tr>
<tr><td><a href="c:\test\test(10)\test(3)">c:\test\test(10)\test(3)</td><td>3</td></tr>
<tr><td><a href="c:\test\test(10)\test(4)">c:\test\test(10)\test(4)</td><td>4</td></tr>
<tr><td><a href="c:\test\test(10)\test(5)">c:\test\test(10)\test(5)</td><td>5</td></tr>
<tr><td><a href="c:\test\test(10)\test(6)">c:\test\test(10)\test(6)</td><td>6</td></tr>
<tr><td><a href="c:\test\test(10)\test(7)">c:\test\test(10)\test(7)</td><td>7</td></tr>
<tr><td><a href="c:\test\test(10)\test(8)">c:\test\test(10)\test(8)</td><td>8</td></tr>
<tr><td><a href="c:\test\test(10)\test(9)">c:\test\test(10)\test(9)</td><td>9</td></tr>
<tr><td><a href="c:\test\test(2)">c:\test\test(2)</td><td>2</td></tr>
<tr><td><a href="c:\test\test(3)">c:\test\test(3)</td><td>3</td></tr>
<tr><td><a href="c:\test\test(4)">c:\test\test(4)</td><td>4</td></tr>
<tr><td><a href="c:\test\test(5)">c:\test\test(5)</td><td>5</td></tr>
<tr><td><a href="c:\test\test(6)">c:\test\test(6)</td><td>6</td></tr>
<tr><td><a href="c:\test\test(7)">c:\test\test(7)</td><td>7</td></tr>
<tr><td><a href="c:\test\test(8)">c:\test\test(8)</td><td>8</td></tr>
<tr><td><a href="c:\test\test(9)">c:\test\test(9)</td><td>9</td></tr>

    </body>
    </html>