メインコンテンツまでスキップ

Pythonでファイルを収集してZip化する

友澤
ディアシステム(株)開発一部第3課

こんにちは、開発 1 部第 3 課の友澤です。

今年になって、初めて Python で開発する業務に就いたので、
簡単なスクリプトツールを作成してみました。
作成したのは、「Ubuntu 環境からファイルを収集して Zip 化する」になります。

仕様:
  • Python で作成する、スクリプトツール
    FileExplorer/FileExplorer.py
  • スクリプトの実行方法
    $ python3 FileExplorer.py
  • /var/log/から syslog を収集する(ローテートされたファイルも対象とする)
    上記、ファイルパスとキーワードはコード上で定義します。
  • スクリプト実行時に、ファイル格納用ディレクトリを作成し、
    収集したファイルを格納する
  • ファイル収集後、ファイル格納用ディレクトリを Zip 圧縮でまとめる
  • Zip ファイルのフォーマット
    FileExplorer_yyyymmdd_hhmmss.zip
  • Zip 圧縮後、ファイル格納用ディレクトリを削除する
開発メモ:
  • Zip ファイルのフォーマットに使用する現在日時は、
    datetime.now()で取得し、strftime()でフォーマットを指定します。
  • ファイル格納用ディレクトリはカレントディレクトリ(./FileExplorer/)に
    「FileExploerOutput」を作成します。
    カレントディレクトリのパスは、os.getcwd()で取得し、
    os.makedirs()でディレクトリを作成します。
    ※既に存在しているディレクトリを指定してもエラー(FileExistsError)にならない様、
    引数に exist_ok=True を記載しています。
  • ファイルが格納されているディレクトリ(/var/log/)から、
    ファイル名に"syslog"が含まれるファイルを部分一致検索でマッチングさせます。
  • マッチングしたファイルは、shutil.copy()でファイル格納用ディレクトリにファイルコピーします。
  • Zip 圧縮は、zipfile.ZipFile()で行い、zipfile.ZIP_DEFLATED(通常の ZIP 圧縮)とします。
  • Zip 圧縮後、shutil.rmtree()でファイル格納用ディレクトリを削除します。
コード:

画像1

スクリプトの実行:

※WSL の Ubuntu 環境にて実行したイメージになります。

画像2

  • スクリプト実行後、Zip ファイルが格納されています。

画像3

  • Zip ファイル内に、収集したファイルが格納されています。

画像4

まとめ:

・今回はあえてシンプルに「ファイル収集して Zip 化する」スクリプトを紹介しました。
使用している API もネット上で詳しく解説しているところが沢山見つかると思います。
なにかの参考になれましたら幸いです。

未経験から始める
システムエンジニア

一生モノのITスキルを身につけよう

あなたの経験とスキルを
ディアシステムで発揮してください!