当我从我的主目录在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);
答案 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.normcase
。 macpath
版本小写。我很确定os.getcwd
不会自动运行结果;只是提到它作为检查的地方。
答案 3 :(得分:0)
最后,这是Mercurial安装的一个问题。我今晚再次遇到它。
https://www.mercurial-scm.org/wiki/Download为您提供了如何安装Mercurial的不同选项。如果我选择第一个(Mac OS X软件包),“/ Users”目录将报告为“/ users”(即使使用Objective C访问它)。这可以通过macports选项安装Mercurial来解决。这解决了问题,并再次使用大写的“U”返回“/ Users”目录。
任何有关为何发生这种情况的提示仍然受到欢迎。
但至少有一个解决方案。