2016-04-18 8 views
0

に連続してPythonスクリプトを実行する方法はあります。データの確認 4.その他の手順実は私は、単一のPythonスクリプトでやりたい/やってリブート

手順2の後、同じスクリプトを使用して手順3で再起動した後にスクリプトを実行する必要があります。 スクリプトを手動で再度実行する必要がある場合はうまくいきますが、実行するとStep3に直接進む必要があります。

+0

あなたが手で、コマンドラインからスクリプトを実行する場合は、なぜ3ステッププログラムを指示し、特別な引数を指定することを検討していませんか? – Leva7

+0

あなたの入力をありがとう、しかし、私はPythonスクリプトを実行中に任意の引数を提供したくない –

答えて

1

これを実現する簡単な方法は、各ステップの後に書き込む状態ファイルを作成することです。スクリプトを起動すると、ファイルから読み込み、目的の状態に進むことができます。

+0

ちょっとarewm、あなたは私に例を教えてください。私の問題を解決するかもしれません。 –

+1

ダックパンチャーは私をパンチに倒した。 load_state()をtryブロックの中に置き、状態ファイルに何らかの事態が発生した場合(およびスクリプトが最初に実行されたときに処理するため) 'FileNotFoundError'をキャッチします。 – arewm

+0

編集して承認しました。 – DuckPuncher

1

DEFAULT_STATE = 'STEP1 START' 

デフォルト状態の定義ファイルに状態情報を保存します。

def write_state(state): 
    with open('state.txt', 'w') as file_handle: 
     file_handle.write(state) 
write_state('STEP1 COMPLETE') 

は、それからちょうど状態ファイルをロードし、何をすべきかどうかを確認:

def load_state(): 
    try: 
     with open('state.txt', 'r') as file_handle: 
      for line in file_handle: 
       line = line.strip() 
       if line != '': 
        return line 
    except FileNotFoundError: 
     return DEFAULT_STATE 

if load_state() == 'STEP1 COMPLETE': 
    launch_step_2() 
    write_state('STEP2 COMPLETE') 
elif load_state() == 'STEP2 COMPLETE'): 
    launch_step_3() 
    write_state('STEP3 COMPLETE') 

ちょうどその関数を呼び出し、状態ファイルを更新し、それぞれの状態を処理するためにいくつかの関数を記述します。

+0

あなたのポイントを得ました#DuckPuncher ...ありがとう! –

0

汚れた液の種類が、これはあなたが何ができるかです:
任意のステップの前に:

import os.path 
if os.path.isfile("step.txt"): # check if this file exists 
    step3() 
else: 
    step1() 

関数呼び出しstep1step3はあなたのコードの部分を表します。ステップ1の間に
:あなたは、ソースコードのディレクトリに空のテキストファイルstep.txtを作成します。このアクションで

f = open("step.txt", "w") 
f.close() 

、ファイルが存在するためisfile()方法はTrueを返しますので。すべての工程を経た後

import os 
os.remove("step.txt") # clean up 
関連する問題