我想编写读取* .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'
。
我不想在装箱时传递许多变量。
我是面向对象编程的新手,所以任何评论和提示都非常受欢迎!
答案 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()