Linux系统中的文件权限分为三组,每组三个权限:为所有者、组和其他人读取、写入和执行。这三个值中的每一个都可以表示为八进制数,对每个权限求和,其中4对应于读取,2对应于写入,并且1对应于执行。也可以使用字母r、w和x或-(如果未授予权限)编写字符串。例如:640为所有者读/写,组读,其他无权限;转换为字符串,它将是:“rw-r-----”755是对所有者的读/写/执行,以及对组和其他的读/执行;转换为字符串,它将是:“rwxr-xr-x”填写空格,使代码将八进制格式的权限转换为字符串格式。
def octal_to_string(octal):
result = ""
value_letters = [(4,"r"),(2,"w"),(1,"x")]
# Iterate over each of the digits in octal
for ___ in [int(n) for n in str(octal)]:
# Check for each of the permissions values
for value, letter in value_letters:
if ___ >= value:
result += ___
___ -= value
else:
___
return result
print(octal_to_string(755)) # Should be rwxr-xr-x
print(octal_to_string(644)) # Should be rw-r--r--
print(octal_to_string(750)) # Should be rwxr-x---
print(octal_to_string(600)) # Should be rw-------
请帮我解决这个问题
9条答案
按热度按时间vuv7lop31#
blmhpbnm2#
print(octal_to_string(755))
rwxr-xr-x
t5zmwmid3#
w9apscun4#
既然你的问题是关于
"Fill in the blanks to ....a string format."
的我们开始吧
在这个剧本里,
for num in [int(n) for n in str(octal)]:
做四件事;
n
迭代每个字符串的八进制数,int(n)
将这些str值转换为整数,列表解析将获得的整数转换为列表,最后num
迭代列表解析中的每个整数。而且,由于给定的
value_letters
是元组,因此for value, letter in value_letters:
分别迭代for value和letter。希望我能帮到你。:D
8nuwlpux5#
答案是
解释:
考虑八进制= 755
在这里,它将创建如下列表
[7,5,5]
在注解中,我展示了循环如何在7
则它将对创建的列表中的每个数字执行相同的过程
我希望答案是明确的。
p1tboqfb6#
考虑使用
stat.filemode
。https://docs.python.org/3/library/stat.html#stat.filemode
hivapdat7#
pinkon5k8#
n7taea2i9#