2017-01-31 4 views
1

現在tweepyに取り組んでいますが、変数にtweet idを格納し、スクリプトを実行するときにこの値を保持する必要があります。再び。私はファイルとdbを使ってこれを行うことができますが、私は環境変数を使ってそれをやりたいのです。正しい方向に向かってナッジを探しています。スクリプトが再度実行されたときにその値を保持する変数が必要です(Python)

#!/usr/bin/env python 
# encoding: utf-8 

import tweepy 
import time 
import random 
import os 
t=time.time() 

#my api keys 
consumer_key = "xxx" 
consumer_secret = "xxx" 
access_key = "xxx" 
access_secret = "xxx" 


toReply="xxx" 
rt=['hello','hi','okay','bye'] 
#rt=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','you','suck','bruh',':P'] 
auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_key, access_secret) 
api = tweepy.API(auth) 
ts=api.user_timeline(screen_name=toReply,count=1) 
#g=open('id.txt','r') 
#x=g.read() 
#g.close() 
x=os.environ["en"] 
print x 
l=[] 
#print dir(ts) 
#print ts.max_id 
#print type(ts.max_id) 
def unique(y,l): 
    for i in range(0,len(l)): 
     if l[i]==y: 
      return 0 
if int(x)!=ts.max_id:   
    for tweet in ts: 
     for i in range(0,len(rt)+1): 
      y=random.choice(rt) 
      #print y 
      if(unique(y,l)!=0): 
        #print("unique") 
        api.update_status("@" + toReply + " "+y, in_reply_to_status_id = tweet.id) 
        #print y 
        l.append(y) 

    os.environ["en"]=str(ts.max_id) 
    print os.environ["en"] 
    ''' 
    f=open('id.txt','w') 
    f.write(str(ts.max_id)) 
    f.close() 
    ''' 
t1=time.time()-t 
print t1 
+2

環境変数は一方向です:コマンドインタープリタ(または他の実行環境)からプログラムに移動します。それらはプロセスの子孫にも継承されます。しかし、プログラムは親の環境を変更することはできません。 – wallyk

+2

ファイル 'pickle'を使用することをお勧めします –

+1

[Pythonスクリプトの実行間に永続変数をメモリに保持する]可能な複製(http://stackoverflow.com/questions/6687660/keep-persistent-variables-in- memory-between-runs-of-python-script) – iFlo

答えて

0

をピクルスはコメントで提案されているが、それはあなたという大きな欠点を持っているされています。私はここで= 1 エン輸出は、私が使用しているコードです>コマンドを使用して、端末からの環境変数を設定していますPythonプログラムの外側からピクルスを編集することはできません。

は、Windowsの.iniファイルのようなものをしたい場合は別の可能性は、JSON(モジュールjson)を使用することです、この答えHow to read and write INI file with Python3?

ごとに、あなたがしたいのPythonライブラリモジュールでのConfigParserです。これは非常に複雑なことがありますが、key:valueのペアの単一の辞書に固執するとそうではありません。

さらに別の可能性はYAMLです。

いずれの場合も、プログラムが賢明に終了するたびに構成変数の状態が保存されるように、atexitに出口ハンドラを登録することもできます。

関連する問題