在Windows 7中打开带冒号(":")的文件名

6 投票
1 回答
4195 浏览
提问于 2025-04-18 02:07

我正在写一个Python应用程序,想让它在Windows和Linux上都能运行,但遇到了一个文件命名的问题。我需要加载一个名字里有冒号的JSON文件。不过,在Windows 7上,这似乎直接是不可能的。

这些文件存储在NFS驱动器上,所以我们可以在Windows 7上看到它们,但就是打不开。

有没有人知道有什么方法可以在Windows 7上用Python读取这个名字里有冒号的JSON文件?我们有一个可能的解决办法(但我们不想用),就是通过SSH连接到Linux机器,回显文件内容然后再传回来。

显然,如果其他人有更好的方法,那就太好了。Windows XP可以正常打开和读取这些文件——这只是Windows 7的问题。

更新一下,我们发现可以通过网页访问我们的NFS/AFS服务器。所以我们最终使用了urllib2的urlopen来处理所有包含无效字符的JSON文件。到目前为止,这个方法似乎运行得很好。

1 个回答

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。

撰写回答