Функция Python возвращает несколько элементов - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть функция ниже:

    def fisap(self):
    print("*" * 42)
    print("Nrc", "Data".rjust(10), "Intrari".rjust(13), "Iesiri".rjust(12))
    print("*" * 42)
    for elem in self.ddop.keys():
        if elem in self.ddint.keys():
            print(str(elem), str(self.ddop[elem]).rjust(10), str(self.ddint[elem]).rjust(13))
        else:
            print(str(elem), str(self.ddop[elem]).rjust(10), str(0).rjust(13), str(self.ddies[elem]).rjust(12))
    print("*" * 42)
    print("Soldul final este de : " + str(self.sold))

При вызове возвращает следующее (пример): enter image description here

Возвращает то, что нужно вернутьвсе хорошо, но мой вопрос в том, как я могу сохранить весь этот возвращаемый текст, в этом формате, в переменной, строке или чем-либо еще, чтобы можно было отправить его по электронной почте с помощью smtplib.Если я пытаюсь отправить электронное письмо, используя тело сообщения: selfitem.fisap (), оно отправляет None.Вот так: enter image description here

Любая помощь с благодарностью.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Спасибо!Основываясь на вашем решении, я написал следующий код, и он работал:

    def trimitefisaemail(self):
    a = ("*" * 42) + "\n"
    b = "Nrc" + "Data".rjust(10) + "Intrari".rjust(13) + "Iesiri".rjust(12) + "\n"
    c = []
    for elem in self.ddop.keys():
        if elem in self.ddint.keys():
            c.append(str(elem) + str(self.ddop[elem]).rjust(10) + str(self.ddint[elem]).rjust(13))
        else:
            c.append(str(elem) + str(self.ddop[elem]).rjust(10) + str(0).rjust(13) + str(self.ddies[elem]).rjust(12))
    cc = "\n".join(c)
    d = "\n" + "Soldul final este de : " + str(self.sold)
    message = "%s%s%s%s\n%s%s"%(a,b,a,cc,a,d)
    sendemailfunction(message)
0 голосов
/ 07 декабря 2018

Вам нужно сохранить все сообщение в строку перед печатью, только тогда вы можете вернуть его, используя return

print не то же самое, что return

def fisap(self):
    elements = []
    for elem in self.ddop.keys():
        if elem in self.ddint.keys():
            elements.append(str(elem), str(self.ddop[elem]).rjust(10), str(self.ddint[elem]).rjust(13))
        else:
            elements.append(str(elem), str(self.ddop[elem]).rjust(10), str(0).rjust(13), str(self.ddies[elem]).rjust(12))

    message = "{divider}\n{headers}\n{elements}\n{divider}\n{total}".format(
        divider="*" * 42,
        headers='\t'.join(["Nrc", "Data".rjust(10), "Intrari".rjust(13), "Iesiri".rjust(12)]),
        elements=elements,
        total="Soldul final este de : " + str(self.sold)
        )

    print(message)
    return message

def main():
    returned_value = fisap() #fisap() is called and its result is stored in the variable returned_value
    print(returned_value) #we can then print it again or treat it as we would a string variable
...