我编写了这段代码,它将显示特定文件或文件夹上的用户和组的权限列表。
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行,打开(文件名,'w') PermissionError: Errno 13权限被拒绝:'d:/study‘
我从管理员用户处运行。
知道吗?TNX人
发布于 2013-12-04 10:44:59
因为你的问题有点模糊,所以可能有很多错误。我会试着列出一些可能的问题。
在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)变量格式,如何正确导入模块、空格等。
https://stackoverflow.com/questions/20371476
复制相似问题