def test(file_name):
if file_name.lower().endswith('.gz'):
with gzip.open(file_name) as f:
f_csv = csv.reader(i.TextIOWrapper(f))
#### Same Code
if file_name.lower().endswith('.csv'):
with open(file_name) as f:
f_csv = csv.reader(i.TextIOWrapper(f))
#### Same Code
Run Code Online (Sandbox Code Playgroud)
问题>有没有更好的方法来组合上面的代码而不重复"相同代码"部分?该函数test使用gzip.open,如果它file_name是一个gz文件,否则它会以常规方式打开open.
一种方法是:
def test(file_name):
loader = None
if file_name.lower().endswith('.gz'):
loader = gzip.open
elif file_name.lower().endswith('.csv'):
loader = open
if loader is not None:
with loader(file_name) as f:
f_csv = csv.reader(i.TextIOWrapper(f))
#### Same Code
Run Code Online (Sandbox Code Playgroud)