我编写此代码,假设向我显示特定文件或文件夹上的用户和组的权限列表
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人
答案 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)格式,如何正确导入模块,空格等。