2016-12-20 4 views
0

中間ディレクトリとリーフ・ディレクトリの作成は、次の例の条件(MAC OS Darwin)のように失敗します。 '/ tmp'ディレクトリに 'test'ファイルがあります:os.makedirsは、Pythonで同じ名前のファイルが存在する場合に例外を生成します。2.7.10

if os.path.isfile('/tmp/test'): 
    if os.path.isdir('/tmp/test') is False: 
     os.makedirs('/tmp/test') 

Traceback (most recent call last): 
File "/Library/Python/2.7/site-packages/IPython/core/interactiveshell.py", line 2881, in run_code 
exec(code_obj, self.user_global_ns, self.user_ns) 
File "<ipython-input-45-71969e2d9a17>", line 3, in <module> 
os.makedirs('/tmp/test') 
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 157, in makedirs 
mkdir(name, mode) 
OSError: [Errno 17] File exists: '/tmp/test' 

この場合、どのようにディレクトリを作成できますか?

+0

この例では、ファイル '/ tmp/test'が存在するかどうかをチェックしています。残りのサンプルコードが実行されている場合は' True'を返す必要があります。次のチェックは、 '/ tmp/test'はディレクトリではなく、ファイルであることがわかっているので、パスします。次に、 'os.makedirs'はすでにファイルがあるディレクトリを作成しようとします。 Pythonでは、すでにファイルがあるディレクトリを作ることはできません –

答えて

0

Simon Walker氏は、これがPythonのバグではなく、実装エラーであると述べています。オペレーティングシステム(Darwinだけでなく、Windowsのような他のOS)は、ディレクトリ内に同じ名前のファイルとディレクトリを持つことを許しません。 Unix/Linuxの場合はexplanationを参照してください。

0

一時ディレクトリを作成する場合は、tempfile.mkdtemp()を使用します。

関連する問題