【发布时间】:2021-05-15 09:10:20
【问题描述】:
我似乎无法理解在线课程中给出的这个问题的解决方案。我找到了解决它的实际代码,但我仍然不明白。谁能更详细地向我解释一下为什么这样做?我将不胜感激。
Linux 系统中文件的权限分为三组,每组三种权限:所有者、组和其他人的读、写和执行。这三个值中的每一个都可以表示为对每个权限求和的八进制数,其中 4 对应于读取,2 对应于写入,1 对应于执行。或者,如果未授予权限,则可以使用字母 r、w 和 x 或 - 编写字符串。 例如: 640是所有者读/写,组读,其他无权限;转换为字符串,它将是:“rw-r-----” 755是所有者读/写/执行,组和其他人读/执行;转换为字符串,它将是:“rwxr-xr-x” 填空使代码将八进制格式的权限转换为字符串格式。我对 for 循环的那一行感到很困惑——我只是不明白。
我在互联网上找到的灵魂(可以正常工作):
def octal_to_string(octal):
result = ""
value_letters = [(4,"r"),(2,"w"),(1,"x")]
# Iterate over each of the digits in octal
for i in [int(n) for n in str(octal)]:
# Check for each of the permissions values
for value, letter in value_letters:
if i >= value:
result += letter
i -= value
else:
result += '-'
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-------
【问题讨论】: