On Sun, 03 Jun 2018 10:38:34 +1000, Chris Angelico wrote: > Let's just rewind this subthread a little bit. YOU said that the > behaviour of os.path.exists on Unix systems should be "return False for > invalid things" on the basis that the Windows invalid paths return > False. Remember?
No, invalid paths on Linux return False too: py> os.path.exists("") False I can make a VFAT partition under Linux: [steve@ando ~]$ dd if=/dev/zero of=fat.fs bs=1024 count=48 48+0 records in 48+0 records out 49152 bytes (49 kB) copied, 0.0149677 seconds, 3.3 MB/s [steve@ando ~]$ /sbin/mkfs.vfat fat.fs mkfs.vfat 2.11 (12 Mar 2005) [steve@ando ~]$ mkdir dos [steve@ando ~]$ sudo mount -o loop fat.fs ./dos [sudo] password for steve: I can write to it (as root), but not all file names are valid: [steve@ando ~]$ sudo touch ./dos/foo [steve@ando ~]$ sudo touch ./dos/"foo?" touch: setting times of `./dos/foo?': No such file or directory [steve@ando ~]$ ls ./dos foo And even though I'm using Linux, I get the right answer, legal file name or not legal file name. [steve@ando ~]$ python3.5 -c "import os; \ > print(os.path.exists('./dos/foo'))" True [steve@ando ~]$ python3.5 -c "import os; \ > print(os.path.exists('./dos/foo?'))" False > I said that Windows isn't POSIX, And I said, as a by-the-by, that technically Windows is POSIX compliant, for a very pedantically true but dubious in practice value of compliant. > and pointed out just a couple of ways in which, to a programmer, Windows > behaves very differently to POSIX-compliant systems. Is that Windows out of the box, or Windows with the POSIX subsystem installed and active? You keep talking about "POSIX-compliant", but POSIX is a family of standards. A system can be compliant with one POSIX standard without being compliant to the others. And ironically, neither Linux, OpenBSD, FreeBSD nor Darwin are fully POSIX compliant, merely "mostly" compliant. (Or at least, they haven't been certified as such.) Not that it matters much in practice. In any case, the minutia of POSIX versus Windows, the availability of drive letters and signals etc are utterly irrelevant to the question of what os.path.exists should do. Just as it ought to be utterly irrelevant that on Linux native C strings are null terminated. -- Steven D'Aprano "Ever since I learned about confirmation bias, I've been seeing it everywhere." -- Jon Ronson -- https://mail.python.org/mailman/listinfo/python-list