Python新手和我唯一的「編碼」經驗是SQL,因此請和我一起袒護。從For循環發送多個文件路徑的電子郵件
我有一個for循環,將數據從共享位置的電子表格(xlsx文件)插入到數據庫表中。運行完成後,我想將處理過的文件名稱的電子郵件發送到通訊組列表。現在我知道如何在for循環中執行此操作,但我只想發送一封電子郵件。我的主要問題是,我不確定如何存儲文件名,然後在完成循環後,發送包含所有文件名的電子郵件。我正在考慮在數組中這樣做,但這似乎效率低下。我也在看StringIO(或cStringIO)。
import xlrd
import pymssql
import glob
import os
import shutil
import uuid
from time import gmtime, strftime
path = 'c:\\Test\\'
source = glob.glob(os.path.join(path, '*.xls*'))
print source
if not source:
exit()
for sf in source:
# Establish a SQL connection
database = pymssql.connect("localhost", "username", "password",
"testdb")
# Get the cursor, which is used to traverse the database, line by line
cursor = database.cursor()
#Parse name from file
name = sf
delivery,type,name,date = name.split("_",3)
# Create the INSERT INTO sql query
query = """INSERT INTO testdb(value1,value2) VALUES (%s, %s)"""
# Open the workbook and define the worksheet
book = xlrd.open_workbook(sf)
sheet = book.sheet_by_name("Test")
date = strftime("%Y-%m-%d %H:%M:%S", gmtime())
assetuuid = str(uuid.uuid1())
for r in range(1, sheet.nrows):
value1 = sheet.cell(r, 3).value
value2 = sheet.cell(r,9).value
values = (value1, value2)
cursor.execute(query, values)
shutil.move(sf, 'c:\\Test\\Archive\\')
# Close the cursor
cursor.close()
# Commit the transaction
database.commit()
# Close the database connection
database.close()
謝謝!
當你插入數據,文件名添加到列表對象。然後,當循環結束時,只需將文件名列表轉儲到電子郵件正文中。 –
感謝David,我添加了代碼。 – HMan06