えくすとらんのブログ: 更新がなくなったら○日後自動でコマンド実行  python3

更新がなくなったら○日後自動でコマンド実行  python3

この前のブログではpythonプログラムをスタートアップで

起動する方法を調べてメモさせてもらいました

それもこれも実はいわゆる遺言ソフトといわれるものを

作ってみたかったというのがあって自分にもしものことが

あったときに自動でコマンド..あるいはソフトを起動できたら

いいのになぁとおもっていました

で・・・一応それらしいのを書いてみました

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import sys, select
import subprocess as sp

#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or notuch is run):  ")
i, o, e = select.select( [sys.stdin], [], [], 10 )

if (i):
    print("input", sys.stdin.readline().strip())
    a = "y"
else:
    print("You said nothing!")
    a = "n"
if a == "y":
    global b
    global f
    b = input("何日後に設定しますか?:  ")
    print("実行日まであと{}日です".format(b))
    f = open('jigensave.txt','w')
    f.write(b)
    f.close()

elif a == "n":
    f = open('jigensave.txt')
    for b in f:
        b = int(b) - 1
        print("実行まであと{}日です".format(b))
        f = open('jigensave.txt','w')
        f.write(str(b))
        f.close()

#実行日を決定
future = today + datetime.timedelta(days=int(b))
#実行日から30日を取得(継続期間)

dur = future  +   datetime.timedelta(days=30)
#継続期間表示
for i in range((dur - future).days + 1):
    jikkou = future + datetime.timedelta(days = i)
    if today < jikkou:
        print(str(jikkou) + ":実行予定です")
    elif today > jikkou:
        print(str(jikkou) + ":過去へ戻ることはできません")
    elif today == jikkou:
        print("実行しました")
       #シェルコマンドを実行
        #cmd = "ls "
        #sp.call( cmd, shell=True  )

この設定では○日後から30日間プログロムの実行を試みます

シェルコマンド(subprocess call)
のところはコメントにしてあります
一応 lsなんて書いてみましたがrmやddなどのコマンドを
使うと更新がなくなってから○日後にファイルやフォルダを
消すなんて使い方ができることを想定して作っています
権限あり(shell実行):
sp.call('echo "pass" | sudo -S command',shell=True)

スタートアップで起動するたびに一日づつ実行日が減っていきます 
データセーブの為にテキストファイル(jigensave.txt)
をpyファイルと同じ階層に
吐き出します(中身は”何日後”が数字で入っています。作成のあとは起動のたびにマイナスされる数字を上書きしていきます)

素人がなにもわからずに作っているものですので使用の際は
精査の上お使いください 

またプログラムで起こったいかなるトラブルにも対応できませんのでよろしくおねがいします

自分用メモです

0 件のコメント:

コメントを投稿

 久しぶりの更新です 備忘録 使っているarchlinuxにnvidiaのドライバを入れたところドライバがあっていなかったのかxが起動せずこれをアンインストールしたがその後xf86-video-nouveauが入っているにもかかわらずxが起動しなくなったのでarchwikiにて調...