使用read_csv与自制对象作为'文件'

2024-09-30 04:38:26 发布

您现在位置:Python中文网/ 问答频道 /正文

read_csv文档说,它的第一个参数可以是“具有read()方法的任何对象(例如文件句柄或StringIO)”。我的问题是如何构造一个能以这种能力工作的对象。在

import pandas as pd

file_name = 'plain.txt'

class FileWrap:
    def __init__(self, path):
        self.file = open(path)
    def read(self):
        return self.file.readline().rstrip()

filewrap = FileWrap(file_name)

while True:
    line = filewrap.read()
    if not line:
        break
    print (line)

df = pd.read_csv(FileWrap(file_name), header=None)
print (df)

这个脚本的输出是这样的。在

前三行只是为了说明FileWrap对象的read方法的功能似乎与预期的一样。剩下的几行表明,对于使用read方法构造一个对象,pandas可以一次用一行来接收它的输入,这是我不理解的。一个read要做什么才能让熊猫快乐?在

^{pr2}$

Tags: csvpath对象方法nameselfpandasread
1条回答
网友
1楼 · 发布于 2024-09-30 04:38:26

当pandas调用checkis_file_like时,它将使does对象具有read和{}方法is_file_like无效,因此您可以尝试:

import pandas as pd

file_name = 'plain.txt'

class FileWrap:
    def __init__(self, path):
        self.file = open(path)
    def __iter__(self):
        self.file.readline().rstrip()
    def read(self, *args, **kwargs):
        return self.file.read()

df = pd.read_csv(FileWrap(file_name), header=None)
print (df)

相关问题 更多 >

    热门问题