在我的Python 2.6(64位,win7,ActivePython),当我打电话: os.path.abspath('D:/PROJECTS/SuiShouBei/www/ssb/static/voices/en/mp3/con.mp3')
它返回:
'\\\\.\\con'
到目前为止,我对其他path没有任何问题。
任何人都有同样的问题?
有人可以告诉我为什么吗?
我可以在Python 2.6,2.7,3.1和3.2中重现这一点。
这种行为的原因是, CON
是Windows中的非法文件名 (尝试os.path.abspath('D:/PROJECTS/SuiShouBei/www/ssb/static/voices/en/mp3/cont.mp3')
和看到一切工作正常)。
所以注意你的文件名不包含
< (less than) > (greater than) : (colon) " (double quote) / (forward slash) \ (backslash) | (vertical bar or pipe) ? (question mark) * (asterisk)
也不要使用以下保留设备名称作为文件的名称(带或不带扩展名):
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.
正如slowdog所注意到的,在与上面相同的MSDN文档中提到 , \\.\CON
是直接访问这种设备名称的正确方法。