ちょっと、捜し物をしたくて
WindowsPCの端末のディレクトリを一斉走査するスクリプトを書きました。
下記、スクリプトの(1)の
mainDirList = os.listdir();
上記の引数に、対象のディレクトリを指定して実行するだけで
ユーザーディレクトリに一覧を書き出すように処理を書いています。
そのうちアップデートするかもしれません。
import os
from io import StringIO
from io import BytesIO
import datetime
# ioオブジェクトの作成
# 出力内容をバッファリングする
i = StringIO()
# 実行時のディレクトリを取得
path = os.getcwd()
# スキャン開始元ディレクトリ(1)
mainDirList = os.listdir("C:\\")
separate = "\\"
tab = " "
def checkAllData(fileName, path, fp, tab = " "):
"""当該関数に渡された第一引数がディレクトリの場合のみ実行"""
"""この場合、一旦プロセスを停止して、当該のディレクトリを再帰的にスキャン"""
if os.path. isdir(path) == True:
fp.write(tab + fileName + "\n")
directoryList = os.listdir(path)
for __temp__ in directoryList :
if os.path.isdir( path + separate + __temp__) == True:
"""親ディレクトリを出力"""
fp.write(tab + __temp__ + "\n");
res = (checkAllData(__temp__, path + separate + __temp__, fp, tab + " "));
else:
fp.write(tab + "->" +__temp__ + "\n")
else :
"""当該関数に渡された第一引数がファイルの場合、そのまま出力"""
fp.write(tab + "->" + fileName + "\n")
"""ディレクトリ構造をファイルへ書き込み"""
try:
#スキャンしたディレクトリ一覧をファイルへ出力する。
fp = open("C:\\Users\\太郎\\test.dat", "w", encoding="CP932")
#ディレクトリのスキャン開始
for tempLine in mainDirList:
try:
"""現在のディレクトリ階層をループ"""
path = "C:" + separate + tempLine
if os.path.exists(path):
fp.write(tempLine + "\n");
checkAllData(tempLine, path, fp, " " )
else :
fp.write("->" + tempLine + "\n");
except Exception as e:
print(str(e))
except :
fp.write("握り潰す" + "\n");
fp.close()
except Exception as e:
print(str(e))