Я хочу изменить права доступа к файлу с файловой маской, хранящейся в файле конфигурации. Поскольку 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)
Есть ли более простой способ сделать это?