从python3.6中的文件导入词典

2024-03-29 08:47:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Python制作一个机器人,用tweepy管理twitter上的一些任务。你知道吗

我在几个文件中保存身份验证的凭据,但我只需要一个文件。举个例子:

for x in range(0, 3):

  if x == 0 : from keysaccount1 import keys
  if x == 1 : from keysaccount2 import keys
  if x == 2 : from keysaccount3 import keys
  if x == 3 : from keysaccount4 import keys

  CONSUMER_KEY = keys['consumer_key']
  CONSUMER_SECRET = keys['consumer_secret']
  ACCESS_TOKEN = keys['access_token']
  ACCESS_TOKEN_SECRET = keys['access_token_secret']

  auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
  auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
  api = tweepy.API(auth, wait_on_rate_limit=True)

存储数据的文件采用以下格式,例如keysaccount1:

keys = dict(
    consumer_key =          'xxxxxxxxxxxxx',
    consumer_secret =       'xxxxxxxxxxxxx',
    access_token =          'xxxxxxxxxxxxx',
    access_token_secret =   'xxxxxxxxxxxxx',
)

有没有办法把这些都保存在同一个文件中,因为我在循环中有一个x变量,可以用来选择我管理的帐户?你知道吗


Tags: 文件fromimporttokensecretifaccessconsumer
1条回答
网友
1楼 · 发布于 2024-03-29 08:47:03

您可以使用单个词典:

auth_data = {
    0: {
        'consumer_key': 'xxxxxxxxxx',
        'consumer_secret': 'xxxxxxxxxxxxx',
        'access_token': 'xxxxxxxxxx',
        'access_token_secret': 'xxxxxxxxxxxxxx',
       }
    ...

您可以访问如下特定字段:

for x in range(0, 3):
    keyset = auth_data[x]

    auth = tweepy.OAuthHandler(keyset['consumer_key'], keyset['consumer_secret'])
    auth.set_access_token(keyset['access_token'], keyset['access_token_secret'])
    api = tweepy.API(auth, wait_on_rate_limit=True)

要保存数据,只需使用python模块pickle:

import pickle

def read():
    with open('data/keys.p', 'r') as f:
        return pickle.load(f)

def write(data): 
    with open('data/keys.p', 'w+') as f:
        return pickle.dump(f, data)

# Read data

auth_data = read()

# Write data

write(auth_data)

相关问题 更多 >