Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中读取FTP服务器上文件的前N行_Python_Ftp_Ftplib_Bytesio - Fatal编程技术网

在Python中读取FTP服务器上文件的前N行

在Python中读取FTP服务器上文件的前N行,python,ftp,ftplib,bytesio,Python,Ftp,Ftplib,Bytesio,我在FTP服务器上有一个CSV文件。该文件大约为200mb 现在,我使用以下方法读取文件,这个实现的问题是文件下载时间太长,执行retrbinary方法大约需要12分钟。我尝试了不同的块大小,我能够得到11分钟的时间,这仍然是太多 download_file = io.BytesIO() ftp.retrbinary("RETR {}".format(file_path),download_file.write, 8024) download_file.seek(0) dat

我在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()
download_file=io.BytesIO()
ftp.sendcmd('TYPE A')
conn=ftp.transfercmd(“RETR{}”.format(文件路径))
fp=conn.makefile('rb')
计数=0
当计数小于4时:
line=fp.readline(ftp.maxline+1)
如果不是直线:
打破
下载_文件。写入(第行)
计数+=1
fp.close()
康涅狄格州关闭

如果您真的想将整个文件分块处理,那么考虑到ftplib和Pandas的API,这将更加复杂。但这是可能的。有关一些想法,请参阅: