【问题标题】:permission denied when i try to get folder permission list当我尝试获取文件夹权限列表时权限被拒绝
【发布时间】:2013-12-20 17:02:15
【问题描述】:

我编写此代码,假设显示特定文件或文件夹上的用户和组的权限列表

import os, sys
import win32api
import win32security
import ntsecuritycon as con
from sys import argv


script, FILENAME = argv

def show_cacls (filename):
  print
  print
  for line in os.popen ("cacls %s" % filename).read ().splitlines ():
    print (line)
open (FILENAME,'w')
print (show_cacls(FILENAME))

它适用于文件,但是当我尝试在文件夹上运行时,我收到以下错误消息:

Traceback(最近一次调用最后一次): 文件“C:\Users\tzuriel\Desktop\test.py”,第 15 行,在 打开(文件名,'w') PermissionError: [Errno 13] Permission denied: 'd:/study'

我从管理员用户运行。

有什么想法吗? TNX 人

【问题讨论】:

    标签: python pywin32


    【解决方案1】:

    由于您的问题有点模糊,因此可能有很多问题。我会尝试列出一些可能的问题。

    在 Windows 路径中,您必须使用反斜杠“\”。在您的错误中,您似乎正在传递不是有效的 Windows 路径的 'd:/study'。

    您不应该使用os.popen 来调用外部程序。请查看使用subprocess 模块http://docs.python.org/2/library/subprocess.html 的示例。

    你可以这样做:

    import subprocess
    import sys    
    
    script, filename = sys.argv
    
    output = subprocess.check_output(["cacls", filename]).splitlines()
    
    for i in output:
        print(i)
    

    这里没有理由在脚本文件中使用函数。我还尝试遵循标准 Python (PEP8) 变量格式,如何正确导入模块、空格等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 2012-01-01
      相关资源
      最近更新 更多