スナックelve 本店

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

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

http://blog.taikomatsu.com/2007/09/05/python-%E7%89%B9%E5%AE%9A%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%95%B0%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B/
をやってみようと思ったら
http://blog.panicblanket.com/archives/631
使った方が楽そう!

ってなわけで

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>