Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
building class
#1
Hey guys,

I wanted to develop my coding so i am about to learn OOP.

I want to build class which will:
1) read excel file in the folder
2)transfer it into dataframe

I was able to do:
class df_excel:
    

        
    def __init__(self, filename, sheetname):
        self.file = filename
        self.sheetname = sheetname

    def excel_to_df(self):
        self.create_df = pd.read_excel(self.file, self.sheetname)
        return self.create_df
    

A = df_excel(r'C:\Users\user\test.xlsx', 'Database_sheet')
df = A.excel_to_df()
print(df)
But i would like to skip providing filename, and make it automatized with function:
    def get_names(self):
        cwd = os.getcwd()
        for file in os.listdir(cwd):
            if file.endswith('.xlsx'):
                filename = cwd + '\\' + file
                return filename
i am confused how to combine it into 1 class... Please help :(
Reply
#2
I can't test the following as I don't have a bunch of xlsx files lying around
if you get errors that you can't figure out, post them
from pathlib import Path
import os


class df_excel:
    def __init__(self, sheetname):
		# set starting path (src code repository)
		os.chdir(os.path.abspath(os.path.dirname(__file__)))
		homepath = Path('.')

		self.filelist = [filename for filename in homepath.iterdir() \
			if filename.is_file() and filename.suffix == '.xlsx']

        self.sheetname = sheetname
		

    def excel_to_df(self):
		for file in self.filelist:
        	self.create_df = pd.read_excel(file, self.sheetname)
			yield self.create_df


def main():
	A = df_excel(r'Database_sheet')
	for df in A.excel_to_df()
		print(df)


if __name__ == '__main__':
	main()
Reply
#3
Thank you Larz60+ :)

yield was missing puzzle in my case :P i tried some different ways to do it on my own and i was trying with return instead of yield

class df_excel:
    cwd = os.getcwd()
    
        
    def __init__(self, sheetname):
        self.sheetname = sheetname

    def excel_to_df(self):
        cwd = os.getcwd()
        for file in os.listdir(cwd):
            if file.endswith('.xlsx'):
                filename = cwd + '\\' + file
                self.create_df = pd.read_excel(file, self.sheetname)
                yield self.create_df
    
def main():
    A = df_excel('Prices')
    for df in A.excel_to_df():
        print(df)
main()
Reply
#4
Can't do much without seeing the full, unaltered error trace. (in error tags)
Please post.
Reply
#5
(Mar-09-2020, 07:21 PM)Larz60+ Wrote: Can't do much without seeing the full, unaltered error trace. (in error tags)
Please post.

everything is fine, topic is solved! :P your previous response was enough to solve it :) Thank you!
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Building a class for polygons and triangles in 2-space crosshairpvp 0 1,533 Nov-22-2019, 02:04 AM
Last Post: crosshairpvp
  Building a class for sqlite3 interaction Nuzvee 5 3,243 Jan-29-2019, 06:47 AM
Last Post: Nuzvee

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020