我编写了一个简单的脚本,它登录到我公司的 SQL Server,执行查询,使用 pandas 将结果读入变量,然后调用 .to_csv 函数,最后将该文件附加到 Outlook 电子邮件(使用 win32com.client)发送给指定的最终用户。
目前该脚本可以运行,但是当我调用 .to_csv 时,我必须指定一个文件位置,将文件保存到该位置,然后在创建 Outlook 附件时引用该文件路径。我希望通过创建 .csv 并附加到电子邮件来消除该步骤,而无需将文件实际保存在某处。这可能吗?
这是我所拥有的一些示例代码:
import pyodbc
import pandas as pd
import os
from datetime import date
import win32com.client as win32
cnxn_str = () #cnxn string detail)
cnxn = pyodbc.connect(cnxn_str)
query = '''
#QUERY GOES HERE
'''
data = pd.read_sql(query, cnxn)
del cnxn
path = (file path) **<-- this is what I want to eliminate**
data.to_csv(os.path.join(path,f'{date.today()}_data.csv'),encoding='utf-8',index=False)** <-- can I call .to_csv without a path?
**
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = ''#recipient
mail.Subject = ''
mail.Body = 'Hey Matthew, attached is a current Open Orders query.'
# To attach a file to the email (optional):
attachment = os.path.join(path,f'{date.today()}_data.csv') **<-- how can I create .csv and attach to email in one step without saving the file somewhere?**
mail.Attachments.Add(attachment)
mail.Send()
不指定任何路径,则
DataFrame.to_csv()
返回字符串:
text = df.to_csv(index=False)
print(text)
打印:
col1,col2
1,2
3,4