在调用Python的os.getcwd()时如何获得正确的大小写?

时间:2010-11-01 22:00:56

标签: python macos

当我从我的主目录在OS X 10.6.4下的Mac上调用os.getcwd()时,路径将转换为小写。我得到了

/用户/名为myUsername

而不是

/用户/名为myUsername

在另一台Mac上,我得到了正确的大写字符串。我该如何配置?是否有(隐藏的)Python设置?

询问原因: 在OS X上,所有用户目录都在“/ Users”中。这总是大写的。当使用Mercurial时,它有时会与我当前目录的这种奇怪和错误的规范化混淆。

回复建议的解决方案:

(1) DiskUtil说我的驱动器格式为“Mac OS Extended(Journaled)”。我在一个月前买了我的电脑,它仍然是最初的驱动器,从未重新格式化。

(2)另一个python控制台会话日志:

$>>>使用os.system( 'PWD')

/用户/克拉斯

0

$>>> os.getcwd()“

'/用户/克拉斯'

$>>> os.path.normcase( '/用户/克拉斯')

'/用户/克拉斯'

$>>> os.chdir( '/用户/克拉斯')

$>>> os.getcwd()

'/用户/克拉斯'

$>>> os.chdir( '/用户/克拉斯')

$>>> os.getcwd()

'/用户/克拉斯'

更新2:

感谢所有回复。我在Objective-C中创建了一个测试用例,它具有相同的小写文件夹名称:

NSFileManager *filemgr;
NSString *currentpath;

filemgr = [NSFileManager defaultManager];

currentpath = [filemgr currentDirectoryPath];

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

4 个答案:

答案 0 :(得分:2)

“HFS plus”文件系统,自Mac OS 8时代以来一直是Apple的文件系统,通常不区分大小写。

Mac OS X版本10.4,或称为“Tiger”,因为它更为人所知,它引入了创建区分大小写的HFS加文件系统的能力。

其中一个人是否可以使用区分大小写的FS?

答案 1 :(得分:0)

问题似乎是您在特定Mac上安装特定Python的问题。我无法找到遇到同样问题的其他人。

您的Mac很可能在安装Python时遇到问题。 AFAIK,没有配置选项使Python代表getcwd()具有正确的情况(默认情况下应该启用此行为)。如果它是一个选项,我会尝试重新安装Python。如果这不起作用,您应该向Python bug tracker报告错误。

答案 2 :(得分:0)

两个未受过教育的猜测:

首先,显然OSX通常不区分大小写,这通常意味着保留大小写:当前目录的名称来自它在磁盘上的大小写,或者当你更改它时它是如何大写的。如果您运行os.system('pwd'),它是否显示为小写?如果是这样,那就是操作系统报告的内容,而Python没有做错任何事情。如果先os.chdir('/UsErS/username'),它会改变吗?

其次,有一个函数可以根据操作系统小写或不选择:os.path.normcasemacpath版本小写。我很确定os.getcwd 会自动运行结果;只是提到它作为检查的地方。

答案 3 :(得分:0)

最后,这是Mercurial安装的一个问题。我今晚再次遇到它。

https://www.mercurial-scm.org/wiki/Download为您提供了如何安装Mercurial的不同选项。如果我选择第一个(Mac OS X软件包),“/ Users”目录将报告为“/ users”(即使使用Objective C访问它)。这可以通过macports选项安装Mercurial来解决。这解决了问题,并再次使用大写的“U”返回“/ Users”目录。

任何有关为何发生这种情况的提示仍然受到欢迎。

但至少有一个解决方案。