我有一个脚本来报告我所有的文件,在目录中,以便用户将被要求删除它们(这是一个非常严重管理群集,没有真正的超级用户)。 当我运行该脚本,我得到: OSERROR:[错误13]许可被拒绝:“ LS:权限被拒绝 我不能写的目录名(公司政策) 的代码是:我得到OSERROR:[错误13]许可被拒绝:<dir name>和os.walk退出
#!/depot/Python-3.1.1/bin/python3.1
from stat import *
import stat
import sys
from collections import defaultdict
from pwd import getpwuid
import sys
sys.path.append('/remote/us01home15/ldagan/python')
import mailer
import os
import re
import glob
import subprocess
import pwd
def find_owner(file):
return pwd.getpwuid(os.stat(file)[stat.ST_UID]).pw_name
if (len(sys.argv) < 1):
sys.error('''Please input <runda number> <case number>''')
files_by_users=defaultdict(list)
runda_num="".join(sys.argv[1])
dir_basic='/berry/secure'
case_num="".join(sys.argv[2])
secure_dir="".join([dir_basic,"/"])
i=1
dirs=[]
runda_case_dir="".join([dir_basic,'/',runda_num,'/',case_num ])
while (os.path.exists(secure_dir)):
if (os.path.exists(runda_case_dir)):
dirs.append(runda_case_dir)
i+=1
secure_dir="".join([dir_basic,str(i)])
runda_dir="/".join([secure_dir,runda_num,case_num])
#now finding list of
manager_email='[email protected] [email protected]'
def bull (msg):
i=1
for dir in dirs:
for root,dirs,files in os.walk(dir,onerror=bull):
for file in files:
file_full_name=os.path.join(root,file)
files_by_users[find_owner(file_full_name)].append(file_full_name)
for username in files_by_users:
sendOffendingNotice(username, file_by+users[username], manager_email)
def sendOffendingNotice(username,filenames,managerEmail):
"""gets file name & manager Email
sends an Email to the manager for review. As there are no smtp
definitions, mailx shall be used"""
user_email=username+'@synopsys.com'
message="""The following files \n""" + """\n""".join(filenames) +"""\n""" + \
""" which belongs to user """ + username +""" does not meet the required names's SPEC\nPlease keep it under a directory which has a proper case/star name\n"""
message= """echo \"""" + message+ """" | mailx -s "Offending files" """ + managerEmail +" " #+user_email
process=subprocess.Popen(message,shell=True)
该脚本不发送电子邮件,但死亡。 感谢您的帮助。
您应该通过pep8脚本运行此操作并修复格式化... – Daenyth 2010-09-07 17:54:31
无论如何,在提问时不要粘贴您的整个代码 - 删除不相关的内容,不要指望其他人通过不相关的代码进行操作。为了大家的理智,请不要在任何地方到处使用“”“长串”“”。 – 2010-09-07 20:03:55