Python 如何在不创建本地文件的情况下将.xlsx文件上载到FTP?

Python 如何在不创建本地文件的情况下将.xlsx文件上载到FTP?,python,python-3.x,windows,openpyxl,ftplib,Python,Python 3.x,Windows,Openpyxl,Ftplib,我正在编写一个脚本,从FTP中提取xml文件,将它们转换为.xlsx文件,然后重新上传到同一FTP上的不同目录。我希望在脚本中创建.xlsx文件,而不是将xml数据复制到模板中并上载本地文件 我试图为.xlsx文档创建一个文件名,但我意识到我需要先保存它,然后才能上传到FTP。我的问题是,是否最好在正在运行脚本的服务器上创建一个临时文件夹,然后清空该文件夹?或者有没有一种方法可以在不保存文档的情况下上传文档(首选)?我将在windows服务器上运行脚本 ftps.cwd(ftpExcelDir)

我正在编写一个脚本,从FTP中提取xml文件,将它们转换为.xlsx文件,然后重新上传到同一FTP上的不同目录。我希望在脚本中创建.xlsx文件,而不是将xml数据复制到模板中并上载本地文件

我试图为.xlsx文档创建一个文件名,但我意识到我需要先保存它,然后才能上传到FTP。我的问题是,是否最好在正在运行脚本的服务器上创建一个临时文件夹,然后清空该文件夹?或者有没有一种方法可以在不保存文档的情况下上传文档(首选)?我将在windows服务器上运行脚本

ftps.cwd(ftpExcelDir)
wbFilename=str(orderID+'.xlsx')
savedFile=将文件保存到某个位置#这是我遇到问题的部分
ftps.storline('STOR'+wbFilename,savedFile)
使用以下代码,我可以将.xlsx文件保存到FTP,但我从Excel收到一个无效扩展名/损坏文件错误:

ftps.cwd(ftpExcelDir)
wbFilename=str(orderID+'.xlsx')
inMemoryWB=io.BytesIO()
wb.save(inMemoryWB)
ftps.storbinary('STOR'+wbFilename,inMemoryWB)

ftp函数获取文件对象。。。但严格来说,这些不需要是文件。Python有
BytesIO
StringIO
对象,它们的行为类似于文件,但由内存支持。请参阅:

ftp函数获取文件对象。。。但严格来说,这些不需要是文件。Python有
BytesIO
StringIO
对象,它们的行为类似于文件,但由内存支持。请参阅:

此处的首选方法取决于操作系统。例如,在linux上,您可能可以在
/dev/shm
中创建一个临时文件,该文件操作简单,与普通文件类似,但实际上只存在于内存中。@JamesK-这将是一个很好的解决方案,但我运行的Windows unfortunatleyopenpyxl需要文件对象,并且无论如何都不能流式处理XLSX。这里的首选方法将取决于操作系统。例如,在linux上,您可能可以在
/dev/shm
中创建一个临时文件,该文件很容易操作,就像普通文件一样,但实际上只存在于内存中。@JamesK-这将是一个很好的解决方案,但我正在运行Windows UnfortunatureYopenPyXL需要文件对象,而且您无论如何都不能流式处理XLSX。