2016-05-22 18 views
0

foo1foo2という2つのディレクトリを作成しようとしています。
現在のディレクトリにfoo1という名前のものはありません。ですが、foo2という名前のファイルがあります。今ディレクトリが存在しなくてもmkdirとmakedirsのFileExistsErrorはディレクトリが存在しない場合でも

[email protected]:~/Desktop/newfolder$ ls 
foo2 
[email protected]:~/Desktop/newfolder$ file foo2 
foo2: ASCII text 
----- 
>>> os.mkdir('foo1') 
>>> os.mkdir('foo2') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
FileExistsError: [Errno 17] File exists: 'foo2' 
>>> os.makedirs('foo2') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/janreggie/anaconda3/lib/python3.5/os.py", line 241, in makedirs 
    mkdir(name, mode) 
FileExistsError: [Errno 17] File exists: 'foo2' 

、ファイルfoo2ありながらfoo2をディレクトリを作成する方法があります:

これらは

は結果ですか?

+0

これはお使いのOSによって異なりますが、そのほとんどがこのような動作を禁止しています。 – myaut

+0

http://unix.stackexchange.com/q/22447/16669 –

答えて

0

を使用するとtry/except

def my_mkdir(dir): 
    try: 
     os.mkdir(dir) 
    except: 
     pass 

で包み。これはオペレーティングシステムの制約です。 Windowsで作業していますか?前述のpiRSquaredのように、同じディレクトリに同じ名前のエンティティを2つ持つことはできません。 OSがファイルとディレクトリを変更すると、既存のファイルと同じ名前のサブディレクトリを作成することができます。さらに、piRSquaredの「try-except」提案は、処理を停止せずに問題を通知する正しい方法です。

0

まあ、これは、Pythonの問題ではありませんmy_mkdir('foo1')my_mkdir('foo2')

+0

これは動作しません。私はそれを自分で試しました。 さらに、単に 'mkdir()'関数を実行しますが、 ''失敗した場合は ''それを渡すだけです。 '' mkdir() 'の問題に対処するための何もしません。 –

+0

私はあなたの質問の質問部分を逃した。申し訳ありません。答えはいいえだ。同じディレクトリに同じ名前のディレクトリとファイルを持つことはできません。ディレクトリは単なるファイルそのものです。これは、同じディレクトリに同じ名前のファイルを2つ持つことができるかどうかを確認するのと同じです。その答えは、ファイルシステムの全体的なポイントでもありません。 – piRSquared

関連する問題