Как я могу получить правильный регистр при вызове Python os.getcwd ()? - PullRequest
0 голосов
/ 02 ноября 2010

Когда я вызываю os.getcwd () на моем Mac под OS X 10.6.4 из моего домашнего каталога, путь преобразуется в нижний регистр.Я получаю

/ users / myusername

вместо

/ Users / myusername

На другом Mac я получаю правильную строку в верхнем регистре.Как я могу настроить это?Есть ли (скрытый) параметр Python?

Причина запроса: в OS X все пользовательские каталоги находятся в "/ Users".Это всегда в верхнем регистре.При использовании Mercurial его иногда путают с этой странной и неправильной нормализацией моего текущего каталога.

В ответ на предложенные решения:

(1) DiskUtil говорит, что мой диск имеет формат"Расширенная ОС Mac OS (журнал)".Я купил свой компьютер несколько месяцев назад, и он по-прежнему является оригинальным диском, никогда не переформатированным.

(2) Другой журнал сеанса консоли Python:

$ >>> os.system ('pwd')

/ Users / klaas

0

$ >>> os.getcwd () "

'/ users / klaas'

$ >>> os.path.normcase ('/ Users / klaas')

'/ Users / klaas'

$ >>> os.chdir ('/ UsErS / klaas')

$ >>> os.getcwd ()

'/ users / klaas'

$ >>> os.chdir ('/ UsErS / klaas')

$ >>> os.getcwd ()

'/ users / klaas'

Обновление 2:

Спасибо за всеответы. Я создал контрольный пример в Objective-C, и он имеет то же имя папки в нижнем регистре:

NSFileManager *filemgr;
NSString *currentpath;

filemgr = [NSFileManager defaultManager];

currentpath = [filemgr currentDirectoryPath];

NSLog (@"Current directory is %@", currentpath);

Ответы [ 4 ]

2 голосов
/ 02 ноября 2010

Файловая система «HFS plus», которая была любимой файловой системой Apple со времен Mac OS 8, обычно не чувствительна к регистру.

В Mac OS X версии 10.4 или, как его принято называть, «Tiger», появилась возможность создавать файловую систему HFS plus, чувствительную к регистру.

Может ли один из них использовать регистр с учетом регистра?

0 голосов
/ 13 июля 2011

В итоге возникла проблема с установкой Mercurial. Я снова столкнулся с этим сегодня вечером.

https://www.mercurial -scm.org / wiki / Download предоставляет различные варианты установки Mercurial. Если я выберу первый (пакеты Mac OS X), каталог «/ Users» будет отображаться как «/ users» (даже при доступе к нему с помощью Objective C). Это можно решить, установив Mercurial через опцию macports. Это устраняет проблему, и каталог «/ Users» возвращается снова с заглавной буквой «U».

Любые намеки, почему это происходит, все еще приветствуются.

Но, по крайней мере, есть решение.

0 голосов
/ 02 ноября 2010

Два необразованных предположения:

Во-первых, по-видимому, OSX обычно не учитывает регистр, что обычно означает сохранение регистра: имя текущего каталога происходит от того, как оно написано на диске или как оно было написанокогда ты превратился в это.Если вы запускаете os.system('pwd'), это показывает, что он в нижнем регистре или нет?Если так, то об этом сообщает ОС, и Python не делает ничего плохого.Изменится ли он, если вы os.chdir('/UsErS/username') первый?

Во-вторых, есть одна функция, которая работает в нижнем регистре или не выборочно в зависимости от ОС: os.path.normcase.Версия macpath строчная.Я почти уверен, что os.getcwd не не автоматически запускает результаты через это;просто упомянув это как место для проверки.

0 голосов
/ 02 ноября 2010

Кажется, проблема в вашей конкретной установке Python на вашем Mac. Я не смог найти кого-то еще, у кого такая же проблема.

Вероятно, у вашего Mac есть проблема с установкой Python. AFAIK, нет опции конфигурации, чтобы Python представлял getcwd() в правильном регистре (это поведение должно быть включено по умолчанию) Если это вариант, я бы попробовал переустановить Python. Если это не работает, вы должны сообщить об ошибке в Python bug tracker .

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