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

How to download a .xls into a Python object via FTP with Python ftplib

我是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()

这让我可以直接在当前文件中创建一个新文件 'myLovelyNewFile.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

(感谢@jacoppens 的建议。)