Python Forum
How do I read variables from another python file?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How do I read variables from another python file?
#1
Hello!

I am new to this forum so I hope I am posting in the right place.

I have a python program that creates another python file and declares 4 variables in it. How can I read the variables from the other file? Here is the first file "CodeTest.py":

import random

testFile = open("testFile.py", "w+")

testString = "abcd"

for i in range(len(testString)):
    testRandom = random.randint(2048, 4096)
    testFile.write(str(testString[i] + " = " + str(testRandom) + "\n"))

print("Variables declared in file testFile.py")
and this is the file created "testFile.py":

a = 2316
b = 2498
c = 3607
d = 3290
But now what do I add to CodeTest.py to be able to read the values in testFile.py?

Thanks
Reply
#2
You can do
namespace = {}
with open("testFile.py") as ifh:
    contents = ifh.read()
exec(contents, namespace)
print(namespace['a'], namespace['b'])
Reply
#3
It would be better to put those values in a dictionary. Also, you are iterating over the indexes of a string. It is better to iterate over the string itself:

import random
 
testString = "abcd"
 
data = {}
for char in testString:
    data[char] = random.randint(2048, 4096)
You can now access the random numbers with data['a'], data['b'], and so on.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#4
Thanks!
#ichabod801
Reply
#5
Also a tip if you want to save dictionary from @ichabod801 code.
You can use JSON.
import random
import json

testString = "abcd"

data = {}
for char in testString:
    data[char] = random.randint(2048, 4096)

with open("test_file.json", "w") as j_out:
    json.dump(data, j_out)
Now can read that JSON file from a other file.
import json

with open("test_file.json") as j:
    data = json.load(j)
Test:
>>> data
{'a': 3183, 'b': 2707, 'c': 2581, 'd': 2144}
>>> data.get('c', 'Not in record')
2581
>>> data.get('d', 'Not in record')
2144
>>> data.get('e', 'Not in record')
'Not in record'
Reply
#6
Can also look at configparser.
Then have on disk a .ini file.
[DATA]
a = 3183
b = 2707
c = 2581
d = 2144
Make:
import configparser

testString = "abcd"

data = {}
for char in testString:
    data[char] = random.randint(2048, 4096)

config = configparser.ConfigParser()
config['DATA'] = data

with open('example.ini', 'w') as configfile:
    config.write(configfile)
Read:
import configparser

config = configparser.ConfigParser()
config.sections()
config.read('example.ini')
Test:
>>> config['DATA']['c']
'2581'
>>> config['DATA']['d']
'2144'
>>> config['DATA'].get('e', 'Not in record')
'Not in record'
Reply
#7
Thanks @snippsat
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Recommended way to read/create PDF file? Winfried 3 2,784 Nov-26-2023, 07:51 AM
Last Post: Pedroski55
  python Read each xlsx file and write it into csv with pipe delimiter mg24 4 1,308 Nov-09-2023, 10:56 AM
Last Post: mg24
  read file txt on my pc to telegram bot api Tupa 0 1,048 Jul-06-2023, 01:52 AM
Last Post: Tupa
  parse/read from file seperated by dots giovanne 5 1,043 Jun-26-2023, 12:26 PM
Last Post: DeaD_EyE
  Formatting a date time string read from a csv file DosAtPython 5 1,160 Jun-19-2023, 02:12 PM
Last Post: DosAtPython
  How do I read and write a binary file in Python? blackears 6 6,013 Jun-06-2023, 06:37 PM
Last Post: rajeshgk
  File path by adding various variables Mishal0488 2 964 Apr-28-2023, 07:17 PM
Last Post: deanhystad
  Read csv file with inconsistent delimiter gracenz 2 1,140 Mar-27-2023, 08:59 PM
Last Post: deanhystad
  Read text file, modify it then write back Pavel_47 5 1,500 Feb-18-2023, 02:49 PM
Last Post: deanhystad
  Correctly read a malformed CSV file data klllmmm 2 1,813 Jan-25-2023, 04:12 PM
Last Post: klllmmm

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020