Python 2to3工具为我的整数添加元音

时间:2014-06-12 14:40:40

标签: python octal python-2to3

我在编写的各种脚本上运行了2to3工具,以便了解我需要更改以将这些脚本移植到Python 3(尽管我最终会手工完成)。< / p>

在这样做的时候,我遇到了一个奇怪的变化2to3在我的一个剧本中制作:

-def open_pipe(pipe, perms=0644):
+def open_pipe(pipe, perms=0o644):

嗯...为什么2to3添加&#34; o&#34;在我的&#34; perms&#34;中间整数吗

来自原始来源的第41行:https://github.com/ksoviero/Public/blob/master/tempus.py

3 个答案:

答案 0 :(得分:4)

尝试在python2 shell中输入0644。它会给你一个不同的数字,因为它是octal。在python3中,0o表示octal个数字。

python2

>>> 0644
420
>>> 

python3

>>> 0644
  File "<stdin>", line 1
    0644
       ^
SyntaxError: invalid token
>>> 0o644
420
>>> 

New in python3

  

Octal文字不再是0720的形式;改用0o720。

答案 1 :(得分:3)

根据What's New In Python 3.0 - Integers

  

八进制文字不再是0720形式;请改用0o720

答案 2 :(得分:2)

在Python 3中不再允许使用带有单个0前缀的旧表示法八进制。要明确给出八进制值you need to prefix the number by a 0o

$ python
Python 2.7.3 (default, Dec 18 2012, 13:50:09)
>>> 0644
420
>>>

$ python3
Python 3.2.3 (default, Jul 23 2012, 16:48:24)
>>> 0644
  File "<stdin>", line 1
    0644
       ^
SyntaxError: invalid token
>>> 0o644
420

根据上面链接的文档:

  

八进制文字不再是0720形式;请改用0o720