PANDAS .to_csv 或 .to_excel 不指定文件路径

问题描述 投票:0回答:1

我编写了一个简单的脚本,它登录到我公司的 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()
python sql pandas outlook win32com
1个回答
0
投票

不指定任何路径,则

DataFrame.to_csv()
返回字符串:

text = df.to_csv(index=False)

print(text)

打印:

col1,col2
1,2
3,4
© www.soinside.com 2019 - 2024. All rights reserved.