Python处理大写和小写名称相同的文件

时间:2012-02-09 00:40:26

标签: python file uppercase lowercase

我今天刚刚发现了这一点:
如果我有一个名为a111的现有文件,并且我想在Python的同一目录中创建一个名为A111的新文件:

f = file('A111', 'w')
f.write('test')
f.close()

它会覆盖我的文件a111而且没有A111 !!
我该如何防止这种情况发生?

3 个答案:

答案 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 +文件系统不区分大小写,除非您从头开始执行安装 - 其中一个安装选项是打开区分大小写。