python循环出现错误、继续下一个_在遇到Python错误后继续循环

这个问题与其他有关异常处理的问题略有不同 .

我正在尝试使用名为SynoACL的Python模块设置Synology NAS上文件夹的权限,该模块包含Synology NASes中包含的(原因不明)SynoACLTool:https://github.com/zub2/synoacl

我的代码获取目录中所有子目录的列表 . 子目录都以AD中的现有用户命名,我试图给予他们对共享其名称的文件夹的修改权限(它们将成为网络上的用户共享) . 该脚本会引发错误,但它实际上已成功设置了权限,尽管存在错误 . 问题是它只对目录中的第一个子目录执行此操作,并且由于该错误而不会继续执行任何其他子目录 . 我已经尝试将其设置为忽略所有异常,但它仍然失败 . 这是我的代码以及错误,删除了个人信息:

错误:

Traceback (most recent call last):

File "synologyusershareperms.py", line 19, in

SynoACLTool.add(".", SynoACL.fromString(folderPermString))

File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/synoacl/tool.py", line 406, in add

return SynoACLTool._parseACLResult(SynoACLTool._communicate(["-add", path, str(acl)]))

File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/synoacl/tool.py", line 370, in _communicate

return subprocess.check_output([ SynoACLTool._SYNOACL_CMD ] + args, universal_newlines = True).split("\n")

File "/volume1/@appstore/py3k/usr/local/lib/python3.5/subprocess.py", line 629, in check_output

**kwargs).stdout

File "/volume1/@appstore/py3k/usr/local/lib/python3.5/subprocess.py", line 711, in run

output=stdout, stderr=stderr)

subprocess.CalledProcessError: Command '['synoacltool', '-add', '.', 'user:DOMAINNAME\\username:allow:rwxpd-aARWc--:fd--']' returned non-zero exit status 255

码:

import os

from synoacl.tool import SynoACL, SynoACLTool

user_share_path = '/path/to/share/'

permTemplate1 = "user:DOMAINNAME\\"

permTemplate2 = ":allow:rwxpd-aARWc--:fd--"

os.chdir(user_share_path)

cwd = os.getcwd()

print(cwd)

folderList = os.listdir()

try:

for folderName in folderList:

os.chdir(folderName)

cwd = os.getcwd()

print(cwd)

folderPermString = permTemplate1 + folderName + permTemplate2

print(folderPermString)

SynoACLTool.add(".", SynoACL.fromString(folderPermString))

os.chdir("..")

except:

pass

由于添加了try和except行,它不会再抛出任何错误,但它会在第一个循环后停止 . 有没有办法让它继续执行循环尽管有错误?

编辑:评论建议将try放在for循环中,似乎没有修复它:

for folderName in folderList:

try:

os.chdir(folderName)

cwd = os.getcwd()

print(cwd)

folderPermString = permTemplate1 + folderName + permTemplate2

print(folderPermString)

SynoACLTool.add(".", SynoACL.fromString(folderPermString))

os.chdir("..")

except:

pass

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值