在Windows 7中使用冒号(":")打开文件名

use*_*510 5 python linux windows nfs colon

我正在编写一个应该在Windows和Linux上运行的Python应用程序,但我遇到了一个文件管理约定的问题.我需要加载一个名称中包含冒号的JSON文件.但是,对于Windows 7,它似乎不可能,至少不是直接的.

这些文件存储在NFS驱动器上,因此我们可以在Windows 7中看到它,但无法打开它们.

有没有人有一个解决方法,如何使用Python在Windows 7中读取包含冒号的JSON文件?我们有一个可能的解决方法(我们希望避免)是通过SSH连接到Linux机箱,回显内容并将其发回.

显然,如果其他人有另一种方法会很棒.Windows XP能够打开它们并且读得很好 - 这只是Win 7的一个问题.

-edit-更新:我们发现我们可以通过网络访问我们的NFS/AFS服务器.所以我们最终使用urllib2 urlopen来处理包含无效字符的所有JSON文件.到目前为止似乎运作良好.

Jos*_*sey 4

引用http://support.microsoft.com/kb/289627

Windows 和 UNIX 操作系统对文件名中可使用的有效字符有限制。然而,每个操作系统的非法字符列表是不同的。例如,UNIX 文件名可以使用冒号 (:),但 Windows 文件名不能使用冒号 (:)。...

要启用文件名字符映射,请创建字符转换文件并添加注册表项。

例如,以下将 UNIX 冒号 (:) 映射到 Windows 破折号 (-):

0x3a:0x2d;将客户端:替换为服务器上的 -

创建文件名字符翻译文件后,必须在系统注册表中指定其名称位置。注册文件的路径和名称:

  • 使用注册表编辑器找到以下注册表项:
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Server For NFS\CurrentVersion\Mapping
  • 编辑字符翻译 (REG_SZ) 值。
  • 输入文件名字符翻译文件的完全限定路径名。例如,C:\Sfu\CTrans.txt。

  • 不幸的是,这解决了错误的问题。仅当 NFS 服务器在 Windows 上运行并且 NFS 客户端在 Linux 上运行时,这才适用。OP 问题则相反。 (3认同)