終了時に変数の値を変更して、次の実行時に最後に設定された値のままになるようにします。これは私の現在のコードの短いバージョンです:
def example():
x = 1
while True:
x = x + 1
print x
'KeyboardInterrupt'で、whileループに設定された最後の値をグローバル変数にします。次回コードを実行するとき、その値は2行目の「x」である必要があります。それは可能ですか?
終了時に変数の値を変更して、次の実行時に最後に設定された値のままになるようにします。これは私の現在のコードの短いバージョンです:
def example():
x = 1
while True:
x = x + 1
print x
'KeyboardInterrupt'で、whileループに設定された最後の値をグローバル変数にします。次回コードを実行するとき、その値は2行目の「x」である必要があります。それは可能ですか?
永続化する変数をテキストファイルに保存し、次にスクリプトを実行するときにスクリプトに読み戻すことができます。
テキストファイルの読み取りと書き込みのリンクは次のとおりです。 http://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files
それが役に立てば幸い!
これは少しハッキーですが、うまくいけば、現在の状況でより適切に実装できるという考えが得られます(pickle
/cPickle
は、より堅牢なデータ構造を維持したい場合に使用する必要があります-これは単純なケースです):
import sys
def example():
x = 1
# Wrap in a try/except loop to catch the interrupt
try:
while True:
x = x + 1
print x
except KeyboardInterrupt:
# On interrupt, write to a simple file and exit
with open('myvar', 'w') as f:
f.write(str(x))
sys.exit(0)
# Not sure of your implementation (probably not this :) ), but
# prompt to run the function
resp = raw_input('Run example (y/n)? ')
if resp.lower() == 'y':
example()
else:
# If the function isn't to be run, read the variable
# Note that this will fail if you haven't already written
# it, so you will have to make adjustments if necessary
with open('myvar', 'r') as f:
myvar = f.read()
print int(myvar)