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
質問> '同じコード'セクションを複製せずに上記のコードを組み合わせる方が良いでしょうか?関数test
は、file_name
がgzファイルの場合はgzip.openを使用し、それ以外の場合は通常のopen
で開きます。同じコードを持つステートメントで2つのpythonを結合する
「####同じコード」を(ローカル)関数に入れるだけですか? 'def same_code(f_csv):...'例えば、最後にファイルハンドラを置くか、カスタムディスパッチ関数を書くなどしてファイルハンドラをディスパッチします。 'with custom_open(file_name)as fp:... ' –
煩雑な* .lower().endswith()*を繰り返す代わりに、* os.path.splitext()*を使うことができます。 – guidot