我正在编写一个应该在Windows和Linux上运行的Python应用程序,但我遇到了其中一个filenaming约定的问题。我需要加载一个名称中带冒号的JSON文件。但是,对于Windows 7,它似乎不可能,至少不是直接的。
这些文件存储在NFS驱动器上,因此我们可以在Windows 7中看到它,但无法打开它们。
有没有人有解决方法如何使用Python在Windows 7中读取包含冒号的JSON文件?我们有一个可能的解决方法(我们要避免)是通过SSH连接到Linux机箱,回显内容并将其发回。
显然,如果其他人有另一种方法会很棒。 Windows XP能够打开它们并且读得很好 - 这只是Win 7的一个问题。
-edit-更新:我们发现我们可以通过网络访问我们的NFS / AFS服务器。所以我们最终使用urllib2 urlopen来处理包含无效字符的所有JSON文件。到目前为止似乎运作良好。
答案 0 :(得分: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
- 编辑CharacterTranslation(REG_SZ)值。
- 输入文件名字符转换文件的标准路径名。例如,C:\ Sfu \ CTrans.txt。