Pythonでファイルを巡回し、結果セットをxmlに格納します.

5056 ワード

昨日、サーバーのあるディレクトリの下にあるファイルのタイプを取得する必要がありました.サーバーにはLinuxがあり、Windowsがあることを考慮して、Pythonウィジェットを書いてこの仕事を完成しました.
LinuxサーバにはCentOS、Fedoraなどがあり、いずれもPythonがインストールされており、バージョンは2.4から2.5までさまざまであるが、WindowsタイプのサーバもPythonがインストールされていることが多いため、本機でスクリプトを1つ作成し、対応機器にアップロードし、実行時にパラメータを変更すればよい.
Python操作ファイルとフォルダはosライブラリを使用しており、以下のコードでは主にいくつかの関数が使用されています.
  • os.Listdir:ディレクトリの下にあるファイルとフォルダ
  • をリストします.
  • os.path.join:ファイル/フォルダのフルパス
  • をつなぎ合わせる
  • os.path.isfile:ファイル
  • か否かを判断する
  • os.path.splitext:名前からサブセクション
  • を取り出す
    次はディレクトリ操作のコードです.
    def search(folder, filter, allfile):
    folders = os.listdir(folder)
    for name in folders:
    curname = os.path.join(folder, name)
    isfile = os.path.isfile(curname)
    if isfile:
    ext = os.path.splitext(curname)[1]
    count = filter.count(ext)
    if count>0:
    cur = myfile()
    cur.name = curname
    allfile.append(cur)
    else:
    search(curname, filter, allfile)
    return allfile

    ファイルの各種情報を返す場合、カスタムクラスallfileを使用してファイルの情報を保存し、プログラムではファイルのフルパスのみを使用し、ファイルのサイズ、時間、タイプなどの情報を同時に記録する必要がある場合は、コードを模倣して拡張することができます.
    class myfile:
    def __init__(self):
    self.name = ""

    格納ファイル情報の配列を取得する後、xml形式として保存することもできる、以下はコードである、使用時にはDocumentからxmlをインポートする必要がある.dom.minidom
    xmlとして保存されているコードを次に示します.
    def generate(allfile, xml):
    doc = Document()

    root = doc.createElement("root")
    doc.appendChild(root)

    for myfile in allfile:
    file = doc.createElement("file")
    root.appendChild(file)

    name = doc.createElement("name")
    file.appendChild(name)
    namevalue = doc.createTextNode(myfile.name)
    name.appendChild(namevalue)

    print doc.toprettyxml(indent="")
    f = open(xml, 'a+')
    f.write(doc.toprettyxml(indent=""))
    f.close()

    実行するコードは次のとおりです.
    if __name__ == '__main__':
    folder = "/usr/local/apache/htdocs"
    filter = [".html",".htm",".php"]
    allfile = []
    allfile = search(folder, filter, allfile)
    len = len(allfile)
    print "found: " + str(len) + " files"

    xml = "folder.xml"
    generate(allfile, xml)

    Linuxコマンドラインの状態でPython filesearchを実行する.pyでfolderという名前を生成できます.xmlのファイル.
    Windowsでプログラムを実行する場合は、folder変数をWindowsの下のフォーマットに変更する必要があります.例えば、c:\apache 2htdocs、c:python 25pythonを実行します.exe filesearch.py(pythonのインストールディレクトリがc:python 25であると仮定)
    すべてのプログラムはここでダウンロードできます:ソースプログラム