On Mon, Aug 22, 2016 at 1:17 PM, Chris Angelico <ros...@gmail.com> wrote: > I tried things like "con.txt" and it simply failed (no such file or > directory), without printing anything to the console.
Are you using IDLE or some other IDE that uses pythonw.exe instead of python.exe? If so, first use ctypes to allocate a console: import ctypes ctypes.WinDLL('kernel32').AllocConsole() The CON device should work if the process is attached to a console (i.e. a conhost.exe instance). You can detect any of the classic DOS devices via isatty(), since they're all character devices. Below I'm using Windows 10, so the console uses a kernel device (condrv.sys was added in Windows 8), for which the name can be queried: >>> f = open('con.txt') >>> h = msvcrt.get_osfhandle(f.fileno()) >>> devname = UNICODE_STRING() >>> ctypes.resize(devname, sizeof(devname) + 32767*2) >>> ntdll.NtQueryObject(h, 1, byref(devname), sizeof(devname)) 0 >>> print(devname.Buffer) \Device\ConDrv > I wouldn't accept file names from untrusted sources on *any* system There are still desktop applications that ask users to name their files. -- https://mail.python.org/mailman/listinfo/python-list