私は、フォルダを作成し、その中に出力ファイルを配置するコードを持っています。 try-except-elseブロックと上書きオプションを使用して、TrueまたはFalseに設定することができます。その場合、フォルダが既に存在し、上書きがfalseに設定されている場合、フォルダが既に存在することを表示しますそれ以外の場合はコメントなしで実行されます。pythonでtry-except-elseで上書きを制御するよりエレガントな方法はありますか?またはCスタイルのコードよりも優れた処理をすることはできますか?
私が作ってみた唯一の解決策は、これまでのところ、次のようになります
def function(parameters, overwrite = False):
try:
os.makedirs(dir)
except OSError:
if overwrite:
data making code...
else:
print dir + ' already exists, skipping...'
else:
if overwrite:
data making code...
は、この問題に対するより良い、またはちょうどよりエレガントな解決策多分ありますか?例えば、私のデータ作成コードを複製する必要はありませんか?このようにすると、私はC言語でいくつかのことを書く必要がなくなり、非常にPythonのように見えないスタイルをあまりにも思い起こさせます。
問題は、ディレクトリの作成とは別に、私は= Trueの上書き)1場合に実行するコードのブロックを必要とする、ということですか、2)ディレクトリがなかったですもともとは存在しない。 elseブロックなしで両方のケースをどのようにカバーできますか? – tel
@tel:try/exceptコードの後に置くだけです。次に、 'return'ステートメントを、それが既に存在することを印刷した後に置いてください。そうすれば、 'os.makedirs'が成功した場合や上書きがTrueの場合、出力が終了します。 –
'errno'をチェックするのではなく、' os.path.exists(path) 'はどうでしょうか? – Apalala