当我尝试获取文件夹权限列表时,权限被拒绝

时间:2013-12-04 09:26:11

标签: python pywin32

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

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

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

追踪(最近一次通话):   文件“C:\ Users \ tzuriel \ Desktop \ test.py”,第15行,in     打开(FILENAME,'w') PermissionError:[Errno 13]权限被拒绝:'d:/ study'

我从管理员用户运行。

任何想法? TNX人

1 个答案:

答案 0 :(得分:0)

由于你的问题有点模糊,可能会有很多错误。我会尝试列出一些可能的问题。

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

您不应该使用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)格式,如何正确导入模块,空格等。