我需要用Python 2和3兼容的方式编写0644(0o644)。怎么做?我唯一的想法是从字符串解析或转换为十六进制或十进制。这不是人类可读的。我不介意速度慢,只需要一次。
答案 0 :(得分:6)
0o644
与python2和python3
答案 1 :(得分:5)
很老的python 2版本(< 2.6)不接受0o644
中的八进制前缀。
如果确实需要符合python 2.5或更早版本,则可以使用int
解析八进制字符串
int('644',8)
请注意,兼容性技巧会抓住ImportError
,NameError
,......例外情况不会在这里工作,因为您无法抓住SyntaxError
,解析器也不会发生的事情:
# that doesn't work
try:
x = 0644 # either crashes here
except SyntaxError:
x = 0o644 # or here
# that doesn't work