2017-01-31 7 views
1

В настоящее время я работаю на tweepy, и мне нужно хранить твитовую идентификатор в переменной и хочу, чтобы она сохраняла это значение, когда скрипт запускается еще раз. Я знаю, что могу сделать это с помощью файлов и db, но я хочу сделать это с помощью переменной среды. Ищете подталкивание в правильном направлении. Я установить переменные окружения из терминала с помощью команды> Экспорт епа = 1 Вот код, который я использую:Нужно переменную, чтобы сохранить ее значение при повторном выполнении скрипта (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' it –

+1

Возможный дубликат [Сохранять постоянные переменные в памяти между сценариями Python] (http://stackoverflow.com/questions/6687660/keep-persistent-variables-in- память между трассами-оф-питон-скрипта) – iFlo

ответ

0

Рассол предлагается в комментариях, но он имеет большой недостаток, что вам не может редактировать рассол из-за пределов программы Python.

Если вы хотите что-то вроде .ini файла Windows, то модуль Python библиотеки вы хотите ConfigParser согласно этому ответу How to read and write INI file with Python3?

Другая возможность состоит в том, чтобы использовать JSON (модуль json). Это может быть чрезвычайно сложным, но если вы придерживаетесь единственного словаря пары «ключ: значение», это не так.

Еще одна возможность - YAML.

Во всех случаях вам также может понадобиться atexit для регистрации обработчика выхода, чтобы состояние ваших переменных конфигурации сохранялось всякий раз, когда программа выходила разумно.