2017-01-31 3 views
1

Derzeit arbeite ich an Tweepy und ich muss Tweet-ID in einer Variablen speichern und möchte diesen Wert beibehalten, wenn das Skript ausgeführt wird nochmal. Ich weiß, dass ich dies mit Dateien und db tun kann, aber ich möchte es mit Umgebungsvariablen tun. Auf der Suche nach einem Schub in die richtige Richtung. Ich habe die Umgebungsvariable vom Terminal setzen Sie den Befehl> export en = 1 Hier ist der Code, den ich verwende:Brauchen Sie eine Variable, um ihren Wert zu halten, wenn das Skript erneut ausgeführt wird (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

Umgebungsvariablen haben eine Richtung: Sie gehen vom Befehlsinterpreter (oder einer anderen Ausführungsumgebung) in ein Programm. Sie werden auch von Nachkommen des Prozesses geerbt. Aber ein Programm kann die Umgebung seiner Eltern nicht ändern. – wallyk

+2

Ich schlage vor, Sie verwenden eine Datei, 'pickle' es –

+1

Mögliche Duplikat von [Behalten Sie persistente Variablen im Speicher zwischen Läufen von Python-Skript] (http://stackoverflow.com/questions/6687660/keep-persistent-variables-in- Speicher-zwischen-Run-of-Python-Skript) – iFlo

Antwort

0

Pickle in einem Kommentar vorgeschlagen wird, aber es hat den großen Nachteil, dass Sie kann ein Pickel nicht außerhalb eines Python-Programms bearbeiten.

Wenn Sie so etwas wie eine Windows-INI-Datei wollen, dann ist die Python-Bibliothek-Modul Sie wollen, ist ConfigParser nach dieser Antwort How to read and write INI file with Python3?

Eine andere Möglichkeit ist JSON zu verwenden (Modul json). Dies kann sehr komplex sein, aber wenn Sie bei einem einzigen Wörterbuch von Schlüssel: Wert-Paaren bleiben, ist es nicht.

Eine weitere Möglichkeit ist YAML.

In allen Fällen können Sie auch atexit registrieren, um einen Exit-Handler zu registrieren, damit der Status Ihrer Konfigurationsvariablen gespeichert wird, sobald das Programm sinnvoll beendet wird.

Verwandte Themen