define variables in the txt file using python

Peter Otten __peter__ at web.de
Sat Oct 8 05:13:48 EDT 2016


Xristos Xristoou wrote:

> hello
> 
> 
> i have one .txt file and i want to create python script with sys.argv or
> argparse or other package to define some variables in the txt file and i
> take some result.
> 
> 
> 
> txt file maybe like this :
> 
> input number 1= %var1%
> input number 2= %var2%
> result = %vresult(var1-var2)%
> 
> how can i write a python script to update dynamic variables in the txt
> file ? i dont want with replace i thing so arguments is the better.

$ cat xristos.txt 
input number 1= %var1%
input number 2= %var2%
result = %vresult(var1-var2)%
$ cat xristos2.py
import argparse
import sys

parser = argparse.ArgumentParser()
parser.add_argument("infile")
parser.add_argument("vars", nargs="*")
parser.add_argument("--outfile", type=argparse.FileType("w"))
args = parser.parse_args()

ns = {}
exec("\n".join(args.vars), ns)

with open(args.infile) as f:
    text = f.read()

parts = text.split("%")
for i in range(1, len(parts), 2):
    parts[i] = str(eval(parts[i], ns))

print("".join(parts), file=args.outfile, end="")
    
$ python3 xristos2.py xristos.txt var1=42 var2=33 'def vresult(a): return 
a*a' --outfile -
input number 1= 42
input number 2= 33
result = 81

Be warned that the text file is now basically a Python script and can do 
everything a script can do -- including wiping your hard drive.




More information about the Python-list mailing list