2

私はいくつかのかなり標準的なコードを使用しています:

 1   if not os.path.exists(args.outputDirectory):
 2       if not os.makedirs(args.outputDirectory, 0o666):
 3           sys.exit('Fatal: output directory "' + args.outputDirectory + '" does not exist and cannot be created')

ディレクトリを削除すると、 のチェックが に1ドロップされ2ます。私はそれを一歩進めて、 のエラー メッセージを押します3

しかし、確認すると、ディレクトリは正常に作成されました。

drwxrwsr-x 2 userId userGroup  4096 Jun 25 16:07 output/

何が足りないの??

4

2 に答える 2

3

os.path.exists()(またはos.path.isdir())を呼び出す必要はありません。os.makedirs()パラメータがありexist_okます。

@Thomas Orozco が述べたように、代わりに例外を発生させることでエラーを示すos.makedirs()ため、'戻り値をチェックしないでください。os.makedirs()

try:
    os.makedirs(args.output_dir, mode=0o666, exist_ok=True)
except OSError as e:
    sys.exit("Can't create {dir}: {err}".format(dir=output_dir, err=e))

注:os.path.exist()ベースのソリューションとは異なります。パスが存在するが、それがディレクトリ (またはディレクトリへのシンボリック リンク) でない場合は、エラーが発生します。

modeパラメータに問題がある可能性があります。3.4.1 より前のバージョンの Python については、注を参照してください。

于 2015-06-25T21:09:34.143 に答える