【问题标题】:How to download a .xls into a Python object via FTP with Python ftplib如何使用 Python ftplib 通过 FTP 将 .xls 下载到 Python 对象中
【发布时间】:2015-06-03 23:44:43
【问题描述】:

我是 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)。这个问题有简单的解决方案吗?

【问题讨论】:

  • 您为什么不想将 .xls 下载为 .xls 并将其另存为 .xls?然后,您可以使用此处的解决方案之一加载 xls:stackoverflow.com/questions/2942889/…
  • @jcoppens 就像你说的,我尝试了以下命令: ftp = FTP('webftp.vancouver.ca'); ftp.login(); ftp.cwd('OpenData/xls');文件名 = 'new_food_vendor_locations.xls';工作簿 = xlrd.open_workbook(文件名); ftp.quit();然而,这给了我一个错误声明“[Errno 2] 没有这样的文件或目录:'new_food_vendor_locations.xls'”

标签: python excel python-2.7 ftp


【解决方案1】:

虽然我一直在寻找一种将 ftp-ed 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 的建议。)

【讨论】:

    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 2012-01-09
    • 2022-10-07
    • 1970-01-01
    相关资源
    最近更新 更多