skip to Main Content

I am brand new at all of this and I am completely lost even after Googling, watching hours of youtube videos, and reading posts on this site for the past week.

I am using Jupyter notebook

I have a config file with my api keys it is called config.ipynb

I have a different file where I am trying to call?? (I am not sure if this is the correct terminology) my config file so that I can connect to the twitter API but I getting an attribute error

Here is my code

    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'

After fixing my read() mistake I received a MissingSectionHeaderError.

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

My header in my config file is [twitter] but that gives me a NameError and say [twitter] is not defined… I have updated this many times per readings but I always get the same error.

My config.ipynb file code is below:

['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 ""

I have tried [twitter], [‘twitter’], and ["twitter"] but all render a MissingSectionHeaderError:

2

Answers


  1. You are using the read() method incorrectly, the input should be a string of the filename, so if your filename is config.ipynb then you need to set the method to

    config.read('config.ipynb')
    
    Login or Signup to reply.
  2. Per your last comment in Brance’s answer, this is probably related to your file path. If your file path is not correct, configparser will raise a KeyError or NameError.

    Tested and working in Jupyter:

    Note that no quotation marks such as "twitter" are used

    # 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)
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search