Sunday, 22 September 2019

How to write two decorator in file operations

I have csv file having contents below

101,item_1 101,item_1

if it is csv my below code will execute

import csv    
fName = input()
def read_csv(fName):
    try:
        with open(fName, 'r') as f:
            reader = csv.reader(f)
            for row in reader:
                print (row)

read_csv(fName)

Here how to write the exception in decorator function and call on the top of that.

first decorator

if fName not endswith .txt or .csv then it has to generate output not accept

Second decorator

if fName = file.txt text file then below operations has to taken care

def read_txt(fName):
    f = open(fName, "r")
    print(f.readline())

if csv then first function to execute and if txt next function to execute. How to achieve using decorator. I can put if conditon to achieve the situation, but that is not the case

My whole code without decorator is below

fName = input()
def read_csv(fName):
    if fName.endswith('.csv'):
        #print  ('hi')
        try:
            with open(fName, 'r') as f:
                reader = csv.reader(f)
                for row in reader:
                    print (row)
        except IOError:
            print ("Could not read file:", fName)
    #SECOND DECORATOR
    if fName.endswith('.txt'):
        f = open(fName, "r")
        print(f.readline())
    #FIRST DECORATOR
    if not(fName.endswith('.csv')) and not(fName.endswith('.txt')):
        print ('not accept')
read_csv(fName)



from How to write two decorator in file operations

No comments:

Post a Comment