[SOLVED] Python Function with multiple arugements, some known, some unknown

Issue

I’ve tried to search for the answer to this around the web, and I’m not sure if I’m phrasing it properly or not, but I can’t seem to find my answer. What I’d like to do is write a function that does some work with arguments in which some are of known values (input/output files) but some are unknown in number (jinja value passing). I understand the idea of *args, but I don’t think that will work in this case.

Here’s what I’d like to work:

from jinja2 import Template

def myTemplate(inputFile, outputFile *args):
    with open(inputFile, 'r') as r:
        render = Template(r.read())
   
    outputFile = render.render(*args)

The last line of this could be one dictionary, two or three single variables, etc. I do this several times in a script (without a dedicated function), but it’s this last part that is keeping me from writing it as a single function and then just calling it. Feels like sloppy coding to not wrap a function around this because, other than this last line, the code is identical.

Solution

solution was simply using **kwargs correctly…

from jinja2 import Template

def myTemplate(inputFile, outputFile **kwargs):
    with open(inputFile, 'r') as r:
        render = Template(r.read())
   
    outputFile = render.render(**kwargs)

with this you can pass as many variables to the render engine of jinja as you’d like.

Answered By – acousticpanic

Answer Checked By – Pedro (BugsFixing Volunteer)

Leave a Reply

Your email address will not be published.