1

smtplib を使用して Python 経由でメールを送信しようとしています。私の主な関心事は、csv/excel の内容を取得し、送信されるメールのメール本文にデータをそのまま (表形式で) 貼り付けることです。次のスニペットを用意して、ファイルを検索し、内容をシェルに出力します。メール本文に同じ出力を取得するにはどうすればよいですか?

from os import listdir
import csv
import os

#Search for a csv in the specified folder
directory = "folder_path"

def find_csv_filenames( path_to_dir, suffix="Data.csv" ):
    filenames = listdir(path_to_dir)
    return [ filename for filename in filenames if filename.endswith( suffix ) ]

filenames = find_csv_filenames(directory)
for name in filenames:
    datafile=name
    print(name)

path=directory+'//'+datafile

#Read the selected csv
with open(path,'r') as csvfile:
    spamreader=csv.reader(csvfile,delimiter=' ',quotechar='|')
    for row in spamreader:
        print(', '.join(row))

あなたの助けのためのTIA。

4

1 に答える 1

0

csvText などのStringIOインスタンスを作成し、 print の代わりに使用します

csvText.write(", ".join(row)+"\n")

印刷のように自動的に追加されないため、最後の改行が必要です。最後に (つまり、ループの後) csvText.getvalue() を呼び出すと、メールしたいものが返されます。

ファイル指定を自分でくっつけずに、代わりに os.path.join() を呼び出すこともお勧めします。

于 2013-04-22T12:38:16.793 に答える