代码之家  ›  专栏  ›  技术社区  ›  Klaas

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

  •  0
  • Klaas  · 技术社区  · 14 年前

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

    /用户/myusername

    而不是

    /用户/myusername

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

    在OS X上,所有用户目录都在“/Users”中。这总是大写的。在使用Mercurial时,它有时会与当前目录的这种奇怪且不正确的规范化混淆。

    针对建议的解决办法:

    (一) DiskUtil说我的驱动器的格式是“Mac OS Extended(Journaled)”。我几个月前买了电脑,它还是原来的驱动器,从来没有重新格式化过。

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

    $>>>操作系统('pwd')

    0个

    $>>>os.getcwd()“

    '/users/klaas'

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

    '/Users/klaas'

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

    $>>>os.getcwd()

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

    $>>>os.getcwd()

    更新2:

    NSFileManager *filemgr;
    NSString *currentpath;
    
    filemgr = [NSFileManager defaultManager];
    
    currentpath = [filemgr currentDirectoryPath];
    
    NSLog (@"Current directory is %@", currentpath);
    
    4 回复  |  直到 14 年前
        1
  •  2
  •   Paulo Scardine    14 年前

    “HFS plus”文件系统通常不区分大小写,自Mac OS 8问世以来,它一直是苹果的首选文件系统。

    MacOSX版本10.4,或者更常见的“Tiger”,引入了创建区分大小写的HFSPlus文件系统的能力。

        2
  •  0
  •   Rafe Kettler    14 年前

    问题似乎是在特定的Mac上安装特定的Python时出现的问题。我没能找到其他有同样问题的人。

    getcwd() 在适当的情况下(默认情况下应该启用此行为)。如果可以的话,我会尝试重新安装Python。如果这不起作用,你应该向 Python bug tracker .

        3
  •  0
  •   Glenn Maynard    14 年前

    两个未经教育的猜测:

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

    其次,有一个函数会根据操作系统进行小写或不进行选择性的转换: os.path.normcase . 这个 macpath 版本是小写的。我很确定 os.getcwd

        4
  •  0
  •   Vadim Kotov First Zero    8 年前

    最终这是Mercurial安装的一个问题。我今晚又碰到了。

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

    任何关于这种情况发生的暗示仍然是受欢迎的。

    但至少有一个解决办法。