读取文件内容的类

时间:2016-08-09 19:59:50

标签: python pandas

我想编写读取* .csv文件的类并使用pandas库解析它。我想知道我应该在哪里初始化df。

#!/usr/bin/env python
import pandas as pd
import os

class ParseDataBase(object):
        def __init__(self, name_file):
                self.name_file = name_file

        def read_file(self):
                """Read the file concent"""

                try:
                        self.df = pd.read_csv(self.name_file)
                except IndexError:
                        print ("Error: Wrong file name")
                        sys.exit(2)
                return self.df

        def dispaly_file(self):
                print self.df

def main():
        x = ParseDataBase('something.csv')
        x.dispaly_file()

if __name__ == '__main__':
        main()

上面的代码返回以下错误:'ParseDataBase' object has no attribute 'df'

我不想在装箱时传递许多变量。

我是面向对象编程的新手,所以任何评论和提示都非常受欢迎!

2 个答案:

答案 0 :(得分:1)

df方法中分配属性read_file。您试图在该属性存在之前访问该属性。

我会这样做:

#!/usr/bin/env python
import pandas as pd
import os

class ParseDataBase(object):
        def __init__(self, name_file):
                self.name_file = name_file
                # Change I made to initiate in the init method.
                self.df = self.read_file()

        def read_file(self):
                """Read the file concent"""

                try:
                        self.df = pd.read_csv(self.name_file)
                except IndexError:
                        print ("Error: Wrong file name")
                        sys.exit(2)
                return self.df

        def dispaly_file(self):
                print self.df

def main():
        x = ParseDataBase('something.csv')
        x.dispaly_file()

if __name__ == '__main__':
        main()

答案 1 :(得分:1)

除非您运行self.df,否则您不会指定read_file()

def main():
    x = ParseDataBase('something.csv')
    x.read_file()     
    x.dispaly_file()