python3でコードを自動実行する!


あなたはコードを書いてterminalをクリックコードを実行!またエディターをクリック!また・・・とかありませんか?
エディターにはスクリプト実行もありますが、モジュールの関連付けとちょっと面倒くさい!!
と私は思い、そこで自動実行のスクリプトを書こうと思い至ったわけです。

 コード

ディレクトリ内のファイルを検索し、更新日を比較して更新されていたら比較ファイルが30バイト以上のものを実行するようにしました。

現状のコードは無限ループにも対応してません。


import os
import time
import re
import datetime
import subprocess as sp
# 実行コマンド
run_name = "python3"

class File_data:
    """ Get of data in the file """
    re_search = re.compile(".swp")

    def __init__(self):
        # ファイル名を取得
        self.file_name = [
            name for name in os.listdir() if (not re.search(name, "swp"))]
        # ファイルの名前と更新日時を辞書にする。
        self.file_time = {
            name: os.stat(name).st_mtime for name in self.file_name}

while True:
    # 比較用インスタンス
    data1 = File_data()
    time.sleep(5)
    # 比較用5秒後のインスタンス
    data2 = File_data()
    # ファイルを作成したときにエラーになるためファイルを作成したら戻る。
    if len(data1.file_name) != len(data2.file_name):
        time.sleep(1)
        continue
    for i in data2.file_name:
       # ファイルの更新日時に差異を検出
        if data2.file_time[i] != data1.file_time[i]:
           # ファイルが小さすぎると困るためサイズを最小指定
            if os.path.getsize(i) > 30:
                print(run_name, i)
                sp.call([run_name, i])


あとがき

今回のコードだと無限ループだと上手くいきません。。
良いアイディアがありましたらお願いします。