Sikuli入門④ファイル保存する際に実行時刻を付与して上書きを防ぐ方法

前回の初めてのsikuli入門③ではメモ帳を使って、テキストファイルを保存する方法を解説しました。

しかし、前回のファイル保存方法は自動処理を2回以上行うと、上書きになってしまいます。そこで、ファイル名の重複を防ぎ、毎回異なるファイル名で保存する方法を紹介します。

 

前回のsikuli入門はテキストファイル保存

前回はsikulixの自動化処理で、以下のコードを解説しました。

  1. Chromeブラウザを操作
  2. Webサイトの情報を取得
  3. データをテキストファイル保存

sikuli入門③webサイト情報をテキストファイル(メモ帳)に自動保存する

事例として、ヤフージャパンのサイトにアクセスし、トップページのニュース8本を取得するコードを紹介しました。

 

ファイル名が固定のため、処理のたびに上書きが発生

前回の処理は、1度だけ実行する場合は問題なく稼働します。

しかし、処理を定期的に何回も実行する場合に、保存する際のファイル名が問題になります。

ファイル名が現在のところ、「test」という固定の名称で保存しています。

そのため、処理を実行するたびに上書きの確認メッセージが表示されます。

さらに上書きしてしまうと、以前のデータが消失してしまうことになります。

Webサイトの情報を1日1回実行し、データとして蓄積するには毎回ファイル名の変更が必要です。

 

ファイル名の上書きを防ぎ、常に新規保存する方法

ファイル名の上書きを防ぎ、常にファイルの新規保存を行う方法があります。

それは、「ファイル名に実行時刻を付与すること」です。

ログファイルなども同じように実行時刻をファイル名に付与することで、ログデータを蓄積しています。

 

sikuliの実行時刻を取得する方法

sikulixで実行時刻を取得するコードをどのように記述するか解説したいと思います。

datetimeのライブラリをインポートして、実行時刻を取得するsikuliプログラム

import datetime
filename =datetime.datetime.today().strftime("%Y%m%d%H%M%S") + "test"

「datetime」ライブラリを利用することで、実行時刻の日付を取得できます。

そのため、まずimportコマンドでdatetimeライブラリをインポートして、コマンドを使えるようにします。

続いて2番目のdatetime用のコマンドで実行時刻+「test」とfilenameとして定義します。

strftime内には、必要な日付情報を選択します。

%Y%m%d%H%M%S → 年月日時分秒

を取得していますが、実行回数によっては秒情報が不要な場合は%Sを削れば、除くことができます。

このsikulixプログラムを実行させると、以下のようにファイル名の重複を避け、新規保存ができます。

「20191115124552test.txt」

このように保存ができれば、毎回上書きすることなく、sikulixの自動操作で取得した情報の蓄積が可能になります。

 

まとめ・終わりに

今回、sikuliによるRPAでファイルを自動保存する際に、ファイル名に実行時刻を付与して、上書きを防ぐ方法を解説しました。

自動処理のプログラムの実行頻度に応じて、日付、日付+時、日付+時+分をファイル名に付加することで、ファイル名が重複を防ぎます。

それによって毎回新しいファイルが新規保存され、データとして蓄積されるようになります。

ぜひ、実行頻度に応じた日付情報の付与を行い、データを自動で蓄積できるようにしましょう。