
pyファイルを実行している際にある特定の動きをしたらそのファイルをもういちど最初からやり直すように設定したいです。
どのようにしたらいいでしょうか
例:
//A
import X,Y
if XXX
elif YYY
else ZZZ
//Aに戻る
のような感じです
あと場所を指定してそこに戻るのも教えてもらえればうれしいです
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
ベストアンサー
なんとなく、目的を達成するための方法としてはリロード以外にいい方法(単純に関数にするとか)がありそうな気がしますが、とりあえず実行中のファイルの再読み込み(再実行)はos.exec*
でできます。
python
1import sys, os 2 3if 再読込する条件: 4 os.execv(sys.executable, os.path.abspath(__file__)) 5else: 6 ...
投稿2016/04/25 11:52
総合スコア142
0
単に同じことを繰り返し、条件によって処理を変えるので良ければ、While文を使って実現できます。
python
1import time 2while 1: 3 time.sleep(1) 4 now_sec = time.gmtime()[5] 5 if now_sec == 5: 6 print now_sec 7 else: 8 print '-',
投稿2016/04/25 03:47
総合スコア553
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。


退会済みユーザー
2016/04/25 04:59 編集

0
python の reload() (Python3では imp.reload())を使うと、import 済みのモジュールをリロードすることができます。しかし、この方法でトップレベルスクリプト(name == 'main' であるスクリプト)をリロードすることはできません。
もしトップレベルスクリプトをリロードしたい場合、現在のトップレベルスクリプトをモジュールとして import する、ラッパースクリプトを作成する必要があります。
現在のトップレベルスクリプトが a.py、それをラップする新しいトップレベルスクリプトが wrap_a.py である場合、次のように記述できます。
Python
1# a.py 2def print_hello(): 3 print 'hello' 4 5if __name__ == '__main__': 6 print_hello()
Python
1# wrap_a.py 2import a 3 4def main(): 5 a.print_hello() 6 7def something(): 8 if (reload_required == True): # リロードが必要な条件判定 9 reload(a) # a.py をリロード 10 main() # プログラム全体を再実行 11 12if __name__ == '__main__': 13 main()
なお、reload() によるモジュール単位の再読み込みにはいくつか重要な注意事項があります。
詳しくは公式ドキュメントを参照されることをお勧めします。
投稿2016/04/25 03:06
総合スコア2425
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2016/04/25 04:55

退会済みユーザー
2016/04/25 04:57

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/04/25 15:13