Python обрабатывает файлы с прописными и строчными именами одинаково - PullRequest
4 голосов
/ 09 февраля 2012

Я только что узнал это сегодня:
Если у меня есть существующий файл с именем a111, и я хочу создать новый файл с именем A111 в том же каталоге с Python:

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

переписать мой файл a111, а A111 нет !!
Как я могу предотвратить это?

Ответы [ 3 ]

8 голосов
/ 09 февраля 2012

Это не связано с питоном. Это из-за нечувствительности к регистру вашей основной файловой системы (я полагаю, HFS + в вашем случае?). Из Википедии :

Не все файловые системы в Unix-подобных системах чувствительны к регистру; по умолчанию HFS + в Mac OS X не учитывает регистр

Решение состоит в том, чтобы использовать чувствительную к регистру файловую систему, если хотите, или использовать другое имя файла!

2 голосов
/ 09 февраля 2012

Это действительно воспроизводит для меня.

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, которая является нечувствительной к регистру файловой системой.

1 голос
/ 09 февраля 2012

Файловая система Mac HFS + по умолчанию не учитывает регистр, если только вы не выполняете установку с нуля - один из вариантов установки включает чувствительность к регистру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...