On 09Aug2018 03:14, MRAB <pyt...@mrabarnett.plus.com> wrote:
[...]
Is it true that Unix filenames can contain control characters, e.g. \x07?

Yep. They're just byte strings. You can't have \0 (NUL) because the API uses NUL terminated strings, and you can't use slash '/' in the filename components because that is the component separator. But otherwise you can basicly use anything - the OS itself doesn't care.

There are some (platform dependent) length limits, and the underlying mounted filesystem you're accessing may itself have special rules (eg nonUNIX filesystems like FAT32, etc).

When happens when you print them out?

They get written out? If you're printing to a terminal of some kind then it will do whatever the bytes from the filename tell it to, as that's what terminals do.

import sys; import subprocess
subprocess.call([sys.executable, '\x07.py'])
.py
0


As you might expect, it beeped when printing '\x07.py' (and showed .py)

And that's OK, is it? :-)

Of course it is :-) \07 is the ASCII BEL character, so it rings the terminal's bell. Modern software terminals emulate that to a better or worse degree.

Suppose you're verbally reciting a filename (or, of course, printing the filename to a voder). Only Victor Borge will provide a full verbal pronunciation of things [1]

[1] 
https://www.youtube.com/results?search_query=victor+gorge+phonetic+punctuation

Cheers,
Cameron Simpson <c...@cskk.id.au>
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to