Попытка прочитать файл конфигурации для подключения к API Twitter

Я новичок во всем этом, и я полностью потерян даже после того, как погуглил, просмотрел часы видео на YouTube и прочитал сообщения на этом сайте за последнюю неделю.

Я использую блокнот Jupyter

У меня есть файл конфигурации с моими ключами API, он называется config.ipynb.

У меня есть другой файл, куда я пытаюсь вызвать?? (я не уверен, что это правильная терминология) мой файл конфигурации, чтобы я мог подключиться к API Twitter, но я получаю ошибку атрибута

Вот мой код

    import numpy as np
    import pandas as pd
    import tweepy as tw
    import configparser



    #Read info from the config file named config.ipynb

    config = configparser.ConfigParser()
    config.read(config.ipynb)
    api_key = config[twitter][API_key]

                      
    print(api_key) #to test if I did this correctly`
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In [17], line 4
  1 #Read info from the config file named config.ipynb
  3 config = configparser.ConfigParser()

----> 4 config.read(config.ipynb) 5 api_key = config[twitter][API_key]

AttributeError: 'ConfigParser' object has no attribute 'ipynb'

После исправления моей ошибки read() я получил MissingSectionHeaderError.

MissingSectionHeaderError: File contains no section headers. 
file: 'config.ipynb', line: 1 '{\n'. 

Мой заголовок в моем конфигурационном файле - [twitter], но это дает мне NameError и говорит, что [twitter] не определен ... Я обновлял это много раз для чтения, но всегда получаю ту же ошибку.

Код моего файла config.ipynb приведен ниже:

['twitter']

API_key = "" #key between the ""

API_secret =  "" #key between the ""
        
Bearer_token = "" #key between the ""

Client_ID = "" #key between the ""

Client_Secret = "" #key between the ""

Я пробовал [twitter], ['twitter'] и ["twitter"], но все они отображают ошибку MissingSectionHeaderError:

С помощью configparser Python вам не нужно добавлять значения в виде строк в файл конфигурации. [twitter], API_key=your_twitter_api_key_value, а не ['twitter'] и не "your_twitter_api_key_value"

sitWolf 19.11.2022 15:07

Привет, IDK, добро пожаловать в StackOverflow. Когда ваша проблема решена, вы не должны расширять ее новыми проблемами, которые возникают в вашем проекте. Ваша проблема, описанная в исходном сообщении о невозможности чтения файла конфигурации, была решена. Теперь вы можете принять ответ и задать новый вопрос для вашей новой проблемы, связанной с аутентификацией.

sitWolf 20.11.2022 10:21
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы используете метод read() неправильно, ввод должен быть строкой имени файла, поэтому, если ваше имя файла config.ipynb, вам нужно установить метод на

config.read('config.ipynb')

Спасибо за помощь. Я исправил ошибку только для того, чтобы получить MissingSectionHeaderError. MissingSectionHeaderError: файл не содержит заголовков разделов. файл: 'config.ipynb', строка: 1 '{\n'. Мой заголовок в моем конфигурационном файле - [twitter], но эти файлы выдают мне NameError и говорят, что [twitter] не определен... Я обновлял это много раз за показания, но всегда получаю ту же ошибку.

IDK 19.11.2022 11:47

Не могли бы вы опубликовать свой файл конфигурации в своем вопросе.

brance 19.11.2022 13:18

Добавил файл в вопрос, спасибо

IDK 19.11.2022 14:52

Удалите ' из ['twitter'], чтобы он стал [twitter], а затем повторите попытку.

brance 19.11.2022 16:11
Ответ принят как подходящий

Согласно вашему последнему комментарию в ответе Бранса, это, вероятно, связано с вашим путем к файлу. Если ваш путь к файлу неверен, configparser выдаст KeyError или NameError.

Протестировано и работает в Jupyter:

Обратите внимание, что кавычки, такие как "twitter", не используются.

# stackoverflow.txt
[twitter]
API_key = 6556456fghhgf
API_secret =  afsdfsdf45435
import configparser
import os

# Define file path and make sure path is correct
file_name = "stackoverflow.txt"

# Config file stored in the same directory as the script.
# Get currect working directory with os.getcwd()
file_path = os.path.join(os.getcwd(), file_name)

# Confirm that the file exists.
assert os.path.isfile(file_path) is True 
# Read info from the config file named stackoverflow.txt
config = configparser.ConfigParser()
config.read(file_path)

# Will raise KeyError if the file path is not correct
api_key = config["twitter"]["API_key"]
print(api_key)

Спасибо! Мне удалось правильно вызвать все мои ключи, а затем я столкнулся с ошибкой аутентификации и опубликовал все, что у меня есть.

IDK 19.11.2022 19:46

Привет IDK, рад, что смог помочь. Пожалуйста, примите ответ (закрыв исходный пост) и задайте новый вопрос о новой проблеме, с которой вы столкнулись.

sitWolf 20.11.2022 10:13

Прежде чем публиковать новый вопрос, посмотрите этот ответ и проверьте, отвечает ли он на ваш вопрос.

sitWolf 20.11.2022 10:16

Другие вопросы по теме