On Feb 6, 2020, at 04:06, Jonathan Fine <jfine2...@gmail.com> wrote:
> 
> A NEWBY GOTCHA
> ================
> 
> A standard way of writing today's date is 2020-02-06. Let's try this in 
> Python, first with Christmas Day, and then for today:
> 
> >>> datetime.date(2020, 12, 25)
> datetime.date(2020, 12, 25)
> >>> datetime.date(2020, 02, 06)
> SyntaxError

On the other hand, even if you’re not familiar with any of the languages that 
use the C octal format, you are likely to run into it in documentation. 

For example, let’s say you want to change a file to not be world-readable or 
-executable. You look up os.chmod and, wow, look at all those things you’re 
supposed to or together. Is there an easier way? Sure, it’s just calling the 
system’s chmod function, and you can man chmod or search online to find a 
helpful tutorial blog or look on StackOverflow or ServerFault or SuperUser, and 
you’ll quickly find not just a more in-depth explanation, but an example that 
does exactly what you want:

    chmod(path, 0770)

So, you figure, in Python, it should be just:

    os.chmod(path, 0770)

So you put that in a script and you get an error that explains that if this is 
meant to be octal you wanted 0o770, if it was meant to be decimal you wanted 
770. So you do what it says and add the o and you’re set.

With your change, this instead compiles and runs and sets the mode to 0o1402, 
which if you’re lucky you don’t have permissions to do, otherwise it’s now 
sticky, execute-only for owner, inaccessible for group, and write-only for 
world.

There aren’t mang cases not related to mode values and the os module where this 
problem would come up, but I think mode values are common enough, and 
unfamiliar enough to newbies that they’re going to search, to be a problem. And 
they’re ubiquitously documented in C or shell terms that will give you C-style 
octal values, so most people who do search will be misled.

_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/DURPQWTWIAQPL2OPVT4SIA7IZ2CQZZN2/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to