この関数は、PythonのAWS S3バケットにファイルをダウンロードします。このコードをリファクタリングして3つ以上の "if"をネストしない方法
for fileinfo in response['Contents']:
if key in fileinfo['Key']:
if '/' in fileinfo['Key']:
filekeysplit = fileinfo['Key'].rsplit('/', 1)
if filekeysplit[1] == '':
continue
if not os.path.exists(file):
os.makedirs(file)
fileout = os.path.join(file, filekeysplit[1])
self._s3.download_file(bucket, fileinfo['Key'], fileout)
else:
self._s3.download_file(bucket, fileinfo['Key'], file)
それを行う方法:私は、私がいない巣3つのコードがより明確で読みやすいことができるように「もし」にするコードに問題がありますか?あなたはいつもテストを反転し、反復をスキップするcontinue
を使用することができますあなたの
1)複製された 'self._s3.download_file'も同様に修正する必要があります... 2)ロギングは、機能性の上に構築する必要があります...混在させないでください。 –
'/'で終わるキーは無効で、スキップする必要がありますか? –