一个超级奇怪的os.path.abspath错误

时间:2011-08-08 15:22:59

标签: python windows filesystems

在我的Python 2.6(64位,win7,ActivePython)上, 我打电话的时候: os.path.abspath('D:/PROJECTS/SuiShouBei/www/ssb/static/voices/en/mp3/con.mp3')

返回:
'\\\\.\\con'

到目前为止,我对其他路径没有任何问题。

任何人都有同样的问题吗? 有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:45)

我可以在Python 2.6,2.7,3.1和3.2中重现这一点。

这种行为的原因是CON是Windows中的illegal filename(尝试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. 

正如慢鸟所注意到的,the same MSDN document as above中提到\\.\CON是直接访问此类设备名称的正确方法。