jaysunn
jaysunn

Reputation: 87

Python loop and append print output to variable for email message

I am pretty new to Python, I am using Python-2.7.3, after searching and coming up empty I figured I would ask the community.

I am trying to basically capture each iteration to a variable, so I can use that variable as the body of my email. I do not want to write a file and then use that as my body.

I have tried this with no luck:

    for sourceFile in sortedSourceFiles:
        print "Checking '%s' " % sourceFile += MsgBody

Here is what I get when I run it:

  File "check_files_alert.py", line 76
    print "Checking '%s' " % sourceFile += MsgBody
                                         ^
SyntaxError: invalid syntax

Sorry for the newbie question.
Thanks

Upvotes: 0

Views: 3835

Answers (4)

Aseem Bansal
Aseem Bansal

Reputation: 6972

The question isn't clear. Either you want to capture the standard output or you want to print and then append or just append. I'll answer for all three.

If you have a function that prints but you don't want it to print but instead put its print output into a list then what you want to do is called capturing the stdout stream. See this question for how to do it.

If you want to print and then append then you can do something like this

for sourcefile in sortedsourcefiles:
    MsgBody += sourceFile
    print "Checking %s" % MsgBody

If you just want to append it then this should be sufficient.

for sourcefile in sortedsourcefiles:
    MsgBody += sourceFile

Hope this helped. If you have any queries ask.

Upvotes: 1

DhruvPathak
DhruvPathak

Reputation: 43245

for sourceFile in sortedSourceFiles:
  MsgBody += sourceFile

Upvotes: 0

Daniel Roseman
Daniel Roseman

Reputation: 599788

I'm really not sure what you are trying to do here. If you want to keep a variable, why are you using print?

If you just want to concatenate the lines in MsgBody, you should do this:

for sourceFile in sortedSourceFiles:
    MsgBody += "Checking '%s' \n" % sourceFile 

Or even better:

MsgBody = '\n'.join("Checking '%s'" % sourceFile for sourceFile in sortedSourceFiles)

Upvotes: 0

debianplebian
debianplebian

Reputation: 92

You would want to do this:

for sourcefile in sortedsourcefiles:
    MsgBody += sourceFile
    print "Checking %s" % MsgBody

Your previous code was turning it into a string, and then trying to add to it.

Upvotes: 0

Related Questions