python - en super mærkelig fejl af os.path.abspath

Indlæg af Hanne Mølgaard Plasc

Problem



På My Python 2.6 (64bit, win7, ActivePython),
når jeg ringer til
os.path.abspath('D:/PROJECTS/SuiShouBei/www/ssb/static/voices/en/mp3/con.mp3')


Det vender tilbage:

'\\.\con'


Jeg har ikke noget problem med andre stier hidtil.


Enhver har det samme problem?

Kan nogen fortælle mig hvorfor?

Bedste reference


Jeg kan gengive dette i Python 2.6, 2.7, 3.1 og 3.2.


Årsagen til denne adfærd er, at CON er et ulovligt filnavn i Windows (prøv os.path.abspath('D:/PROJECTS/SuiShouBei/www/ssb/static/voices/en/mp3/cont.mp3') og se, at alt fungerer fint). [8]


Så pas på, at dine filnavne ikke indeholder


< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
 (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)


Brug heller ikke følgende reserverede enhedsnavne til navnet på en fil (med eller uden udvidelse):


CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, 
LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9. 


Som det fremgår af slowdog nævnes det i samme MSDN-dokument som ovenfor, at \.CON er den rigtige måde at få adgang til et sådant enhedsnavn direkte på. [9]