我正在使用存储在配置文件中的文件掩码来更改文件的权限。由于os.chmod()需要八进制数,因此我需要将字符串转换为八进制数。例如:
'000' ==> 0000 (or 0o000 for you python 3 folks) '644' ==> 0644 (or 0o644) '777' ==> 0777 (or 0o777)
在明显地尝试创建从0000到0777的每个八进制数并将其放入以字符串版本作为排队的字典中之后,我想到了以下内容:
def new_oct(octal_string): if re.match('^[0-7]+$', octal_string) is None: raise SyntaxError(octal_string) power = 0 base_ten_sum = 0 for digit_string in octal_string[::-1]: base_ten_digit_value = int(digit_string) * (8 ** power) base_ten_sum += base_ten_digit_value power += 1 return oct(base_ten_sum)
有没有更简单的方法可以做到这一点?
您是否刚刚尝试将基数8指定为int:
int
num = int(your_str, 8)
例:
s = '644' i = int(s, 8) # 420 decimal print i == 0644 # True