我今天刚刚发现了这一点:
如果我有一个名为a111的现有文件,并且我想在Python的同一目录中创建一个名为A111的新文件:
f = file('A111', 'w')
f.write('test')
f.close()
它会覆盖我的文件a111而且没有A111 !!
我该如何防止这种情况发生?
答案 0 :(得分:8)
这不是因为python。这是由于你的底层文件系统不区分大小写(我猜你的HFS +是什么?)。来自wikipedia:
并非所有类Unix系统中的文件系统都区分大小写;默认情况下,Mac OS X中的HFS +不区分大小写
解决方案是使用区分大小写的文件系统(如果需要)或使用不同的文件名!
答案 1 :(得分:2)
实际上这对我来说很重要。
nixon:~ matt$ touch a111
nixon:~ matt$ python
Python 2.7.2 (default, Nov 14 2011, 19:37:59)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> f = file('A111', 'w')
>>> f.write('test')
>>> f.close()
>>>
nixon:~ matt$ cat a111
test
同样在Mac上。
nixon:~ matt$ uname -a
Darwin nixon.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386
nixon:~ matt$ python --version
Python 2.7.2
我怀疑你会发现正在发生的事情是我们都在使用HFS,这是一个不区分大小写的文件系统。
答案 2 :(得分:1)
默认情况下,Mac的HFS +文件系统不区分大小写,除非您从头开始执行安装 - 其中一个安装选项是打开区分大小写。