etj*_*tjk 5 python ftp ftplib bytesio pandas
我在 FTP 服务器上的目标文件是 ZIP 文件,.CSV 位于更远的两个文件夹中。
我如何才能使用 BytesIO 让 pandas 读取 csv 而无需下载它?
这是我到目前为止所拥有的:
ftp = FTP('FTP_SERVER')
ftp.login('USERNAME', 'PASSWORD')
flo = BytesIO()
ftp.retrbinary('RETR /ParentZipFolder.zip', flo.write)
flo.seek(0)
Run Code Online (Sandbox Code Playgroud)
作为flo我感兴趣的 BytesIO 对象,我如何能够在对象内向下导航几个文件夹,以允许 pandas 读取我的 .csv 文件?这还有必要吗?
该zipfile模块接受存档和单个文件的类文件对象,因此您可以提取 csv 文件,而无需将存档写入磁盘。并且由于read_csv还接受类似文件的对象,因此一切都应该正常工作(前提是您有足够的可用内存):
...
flo = BytesIO()
ftp.retrbinary('RETR /ParentZipFolder.zip', flo.write)
flo.seek(0)
with ZipFile(flo) as archive:
with archive.open('foo/fee/bar.csv') as fd:
df = pd.read_csv(fd) # add relevant options here include encoding it is matters
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1069 次 |
| 最近记录: |