【发布时间】:2019-09-12 12:01:57
【问题描述】:
我的 csv 文件包含以下内容
101,item_1
101,item_1
如果是 csv 我下面的代码将执行
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)
这里是如何在decorator函数中编写异常并在上面调用。
第一个装饰器
如果fName 不以.txt 或.csv 结尾,则它必须生成输出not accept
第二个装饰器
如果 fName = file.txt 文本文件,则必须注意以下操作
def read_txt(fName):
f = open(fName, "r")
print(f.readline())
如果 csv 则执行第一个函数,如果 txt 则执行下一个函数。如何使用装饰器来实现。我可以设置 if 条件来实现这种情况,但事实并非如此
我没有装饰器的整个代码如下
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)
【问题讨论】:
-
这个问题到底是什么?
-
如果 csv 则执行第一个函数,如果 txt 则执行下一个函数。如何使用装饰器实现
-
这是作业吗?当有更好的选择时,不清楚为什么需要为此使用装饰器。
标签: python function file file-io decorator