为什么在Windows中命名文件’con.txt’会使Python写入控制台而不是文件?

我需要帮助调试 Python中的一些奇怪的文件行为.使用以下脚本(write_con.py):
f=open('con.txt','w')
f.write('hi')

在Linux中,这将创建一个名为con.txt的文件,其内容为hi.在Windows中,这会向控制台写入hi并且不会创建文件.我用Python 2.5.1,2.6.3,2.6.5和2.7.2尝试过这个.示例运行:

C:\Users\rpsharp> C:\Python27\python.exe .\write_con.py
hiC:\Users\rpsharp> C:\Python25\python.exe .\write_con.py
hiC:\Users\rpsharp>

然而,除了以con开头的东西之外的任何文件都可以正常工作(write_other_con.py):

f=open('other_con.txt','w')
f.write('hi')

这是一个运行:

C:\Users\rpsharp> C:\Python25\python.exe .\write_other_con.py
C:\Users\rpsharp> type .\other_con.txt
hi

当命名文件的前缀是con时,导致Windows版本的python写入控制台的原因是什么?

你必须检查 Wikipedia Filename page.它有一个包含很多文件系统的保留字符的表.

在Windows和DOS实用程序中,某些单词也可能被保留,不能用作文件名.例如,DOS设备文件

CON,PRN,AUX,CLOCK $,NULCOM0,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9LPT0,LPT1,LPT2,LPT3,LPT4,LPT5,LPT6,LPT7,LPT8和LPT9.

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...