os.makedirs 在 Python 2.7.10 中存在同名文件时生成异常
os.makedirs generates exception when a file exists with the same name in Python 2.7.10
创建中间目录和叶目录失败,如以下示例条件(在 MAC OS Darwin 中)。 '/tmp' 目录中有一个 'test' 文件:
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'
在这种情况下如何创建目录?
如果要创建临时目录,请使用tempfile.mkdtemp()
。
正如 Simon Walker 所说,这不是 Python 中的错误或实施错误。操作系统(不仅是 Darwin,还有 Windows 等其他操作系统)不允许目录中有同名的文件和目录。 Unix/Linux.
见 explanation
创建中间目录和叶目录失败,如以下示例条件(在 MAC OS Darwin 中)。 '/tmp' 目录中有一个 'test' 文件:
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'
在这种情况下如何创建目录?
如果要创建临时目录,请使用tempfile.mkdtemp()
。
正如 Simon Walker 所说,这不是 Python 中的错误或实施错误。操作系统(不仅是 Darwin,还有 Windows 等其他操作系统)不允许目录中有同名的文件和目录。 Unix/Linux.
见 explanation