如何解决用Python读取FTP服务器上的前N行文件
我在 FTP 服务器上有一个 CSV 文件。该文件大约为 200mb。
目前,我正在使用以下方法读取文件,此实现的问题是文件下载时间太长,retrbinary
方法需要大约 12 分钟才能执行。我尝试了不同的块大小,我能够将时间缩短到 11 分钟,这仍然太多了。
download_file = io.BytesIO()
ftp.retrbinary("RETR {}".format(file_path),download_file.write,8024)
download_file.seek(0)
dataframe = pandas.read_csv(download_file,nrows=4)
我需要帮助读取分块的文件,我只需要文件的前 4 行。
解决方法
要仅读取远程文件的前 4 行,请使用:
download_file = io.BytesIO()
ftp.sendcmd('TYPE A')
conn = ftp.transfercmd("RETR {}".format(file_path))
fp = conn.makefile('rb')
count = 0
while count < 4:
line = fp.readline(ftp.maxline + 1)
if not line:
break
download_file.write(line)
count += 1
fp.close()
conn.close()
如果您真的想以块的形式处理整个文件,考虑到 ftplib 和 Pandas 的 API,情况会更加复杂。但这是可能的。有关一些想法,请参阅:Get files names inside a zip file on FTP server without downloading whole archive。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。