目前我正在处理tweepy,我需要将tweet id存储在变量中,并希望在脚本再次运行时保留此值。我知道我可以使用文件和数据库执行此操作,但我想使用环境变量。寻找正确方向的推动。我使用命令> export en = 1从终端设置了环境变量 以下是我使用的代码:
#!/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
答案 0 :(得分:0)
在评论中建议使用Pickle,但它有一个很大的缺点,就是你无法在Python程序之外编辑pickle。
如果您需要类似Windows .ini文件的内容,那么您想要的Python库模块就是ConfigParser,根据此回答How to read and write INI file with Python3?
另一种可能性是使用JSON(模块json
)。这可能非常复杂,但如果您坚持使用单个字典的键:值对,则不是。
另一种可能性是YAML。
在所有情况下,您可能还希望atexit
注册一个退出处理程序,以便在程序明确退出时保存配置变量的状态。