python - 编写python代码将linux读、写、执行八进制格式转换为字符串

标签 python

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-------

请帮我解决这个问题

最佳答案

  • 更简单的方法。

    def octal_to_string(octal):
        permission = ["---", "--x", "-w-", "-wx", "r--", "r-x", "rw-", "rwx"]
        result = ""
        # Iterate over each of the digits in octal
        for ___ in [int(n) for n in str(octal)]:
            result += permission[___]
        return result
    
    print(octal_to_string(755)) 
    print(octal_to_string(644)) 
    print(octal_to_string(750)) 
    print(octal_to_string(600)) 
    

Output1

  • 根据你的逻辑。

    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 += letter
                   ___ -= value
              else:
                   result += "-"
       return result
    
    print(octal_to_string(755))
    print(octal_to_string(644))
    print(octal_to_string(750))
    print(octal_to_string(600))
    

Output2

关于python - 编写python代码将linux读、写、执行八进制格式转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61881343/

相关文章:

python - 所有可能的总和为零的整数集

python - Mac OSX - 属性错误 : 'FigureCanvasMac' object has no attribute 'restore_region'

python - 如何从 anchor 标记中获取文本?

python - 类型错误:使用 %s 时格式字符串的参数不足

python - 仅乘以 Python 字符串中的数值

python - 在 Mac OS X 10.8.5 (Mountain Lion) 上使用 Enthought Canopy python 编辑器运行 matplotlib.pyplot 时没有显示绘图窗口

OSX 10.8.1 上的 python 成像

python - 对列表变量赋值感到困惑

python - 使用 scikit 学习的离散分类器的 ROC 曲线

python - print() 在 copytree() 完成之前不打印