如何使用Python ftplib通过FTP将.xls下载到Python对象中

如何使用Python ftplib通过FTP将.xls下载到Python对象中,python,excel,python-2.7,ftp,Python,Excel,Python 2.7,Ftp,我是Python新手,所以请原谅我问了一个错误的问题。我有一个.xls,我想通过ftp将其保存为Python对象。目前,我正在采取一种笨拙的方法,[步骤1]我首先通过ftp将文件保存为.txt(我知道.xls->.txt是个坏主意!),然后[步骤2]在Python shell中打开并保存该.txt文件。就是 步骤1: ## Import the necessary module from ftplib import FTP ftp = FTP('webftp.vancouver.ca') ft

我是Python新手,所以请原谅我问了一个错误的问题。我有一个.xls,我想通过ftp将其保存为Python对象。目前,我正在采取一种笨拙的方法,[步骤1]我首先通过ftp将文件保存为.txt(我知道.xls->.txt是个坏主意!),然后[步骤2]在Python shell中打开并保存该.txt文件。就是

步骤1:

## Import the necessary module
from ftplib import FTP

ftp = FTP('webftp.vancouver.ca')
ftp.login()
ftp.cwd('OpenData/xls')
filename = 'new_food_vendor_locations.xls'
ftp.retrbinary('RETR %s' % filename, open('myLovelyNewFile.txt', 'w').write)
ftp.quit()
这允许我直接在当前文件中创建一个新文件“mylovelnewfile.txt”。在我的Python shell中,我有:

步骤2:

myLovelyPython = open('myLovelyNewFile.txt','r')
for line in myLovelyPython.readlines():
     print line
myLovelyPython.close()

尽管Python可以运行所有这些命令行,但由于从xls到txt的强制转换,打印的命令行没有正确的输入。此外,我希望将ftp-ed对象直接保存为某个python对象(而不是首先将其保存为python外部的.txt)。这个问题有简单的解决办法吗

尽管我一直在寻找一种直接将ftp加密的excel文件放入Python对象的方法,但如果我允许将excel文件保存在我的目录中并重新读取,以下方法仍然有效:

ftp = FTP('webftp.vancouver.ca')
ftp.login()
ftp.cwd('OpenData/xls')
filename = 'new_food_vendor_locations.xls'
ftp.retrbinary('RETR %s' % filename, open('myLovelyNewFile.xls', 'w').write)
ftp.quit()
workbook = xlrd.open_workbook('myLovelyNewFile.xls')
worksheet = workbook.sheet_by_name('Query_vendor_food')
num_rows = worksheet.nrows - 1
curr_row = -1
while curr_row < num_rows:
    curr_row += 1
    row = worksheet.row(curr_row)
    print row
ftp=ftp('webftp.wincover.ca')
ftp.login()
ftp.cwd('OpenData/xls'))
文件名='new\u food\u vendor\u locations.xls'
ftp.retrbinary('RETR%s'%filename,open('mylovelnewfile.xls','w')。write)
ftp.quit()
工作簿=xlrd.open_工作簿('mylovelnewfile.xls')
工作表=工作簿。工作表按名称(“查询供应商食品”)
num_rows=worksheet.nrows-1
当前行=-1
当前行<数量行时:
当前行+=1
行=工作表。行(当前行)
打印行

(我感谢@jacopens的建议。)

有什么原因不想将.xls下载为.xls并另存为.xls吗?然后,您可以使用以下解决方案之一加载xls:@jcopens就像您说的,我尝试了以下命令:ftp=ftp('webftp.wincover.ca');ftp.login();ftp.cwd('OpenData/xls');文件名='new_food_vendor_locations.xls';工作簿=xlrd。打开工作簿(文件名);ftp.quit();但是,这给了我一个错误声明“[Errno 2]没有这样的文件或目录:'new_food_vendor_locations.xls'”