Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

eval lines from a file

Tags:

python

file

eval

I am creating a program that stores options in a txt file, and I tried a few different lines but so far I think an eval is the best one.

I got this info in the file:

colordefondo = "#abcdef"

and I got this eval in the program:

for line in open("filename.txt", "r"):
  eval(line)

However, when I try the code it gives me this error:

Traceback (most recent call last):
File "D:\project-sae\Sae.py", line 25, in <module>
eval(line)
File "<string>", line 1
colordefondo = "#abcdef"
             ^
SyntaxError: invalid syntax

My question is Why? And if anyone knows a better way to load and store the value of several options from a txt file it would be great. Nevertheless my question is about why that eval is failing, my knowledge about how eval works seems wrong and I don't know why, used it several times before, just never from a file.

like image 904
Saelyth Avatar asked Jun 16 '26 17:06

Saelyth


1 Answers

As the documentation says, 'eval' evaluates an expression. Not a statement. Assignments are statements.

You could use the exec statement. But if you want to exec all of the lines of a file, that's exactly what execfile does. (I'm assuming Python 2.x here; things are a little different in 3.x, but the idea is similar.)

However, this is a bad idea to do in the first place. A better way to load and store the value of several options from a txt file is to use anything other than Python source as your format. JSON, .ini files, .rc files, etc. Python comes with code built-in to handle a variety of such formats. See File Formats and Internet Data Handling for a list of the relevant modules, read through them, and pick the one you want.

like image 173
abarnert Avatar answered Jun 18 '26 07:06

abarnert



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!