硬盘根目录不可访问的PermissionError: [WinError 5] 拒绝访问。: 'G:\\\\$Recycle...
硬盘根目录不可访问的PermissionError: 拒绝访问。: 'G:\\\\$Recycle...读取G:\\根目录时发生错误
list1=os.listdir(pathName)代码在此处发生错误,原因是权限不够,
如何添加权限检测代码,跳过不可访问的文件夹
如果读c:\\ 盘里面的不可访问的文件更多,凭借字符串对比略过文件夹明显不够用
感谢高手指点
本帖最后由 jackz007 于 2022-10-22 19:37 编辑
这一句
os . listdir()
属于风险语句,应该使用异常捕获机制,这样,在函数调用出现错误时,程序不至于直接退出。
try:
list1=os.listdir(pathName) # 风险语句
语句1 # 如果风险语句平安度过,就会从这里继续
语句2
语句3
......
except: #如果风险语句执行错误,就会从这里继续执行
pass jackz007 发表于 2022-10-22 19:22
这一句
属于风险语句,应该使用异常捕获机制,这样,在函数调用出现错误时,程序不至于 ...
list1=[]
try:
list1=os.listdir(pathName)
except:
pass
改好了一样出错
请输入路径:G:\\
list1=os.listdir(pathName)
PermissionError: 拒绝访问。: 'G:\\\\$Recycle.Bin\\S-1-5-18' zy8818 发表于 2022-10-22 19:37
list1=[]
try:
list1=os.listdir(pathName)
把你的代码贴全,至少是整个递归函数的全部代码。 jackz007 发表于 2022-10-22 19:40
把你的代码贴全,至少是整个递归函数的全部代码。
#递归获取目录下所有文件夹路径(包括子文件夹)-》list
def getAllChildFolder(pathName):
#print(pathName)
list1=os.listdir(pathName)
wenjianjiapath=[]
listTemp=[]
for each in list1:
#忽略系统高级访问权限文件
if each.upper()=="$Recycle.Bin".upper() or each.upper()=="Recovery".upper() or each.upper()=="System Volume Information".upper():
continue
newpath=os.path.join(pathName,each)
if os.path.isdir(newpath)==True:
wenjianjiapath.append(newpath)
wenjianjiapath.extend(getAllChildFolder(newpath))
return wenjianjiapath zy8818 发表于 2022-10-22 19:45
#递归获取目录下所有文件夹路径(包括子文件夹)-》list
def getAllChildFolder(pathName):
#print(p ...
def getAllChildFolder(pathName):
wenjianjiapath = []
try:
for each in os . listdir(pathName):
newpath = os . path . join(pathName , each)
if os . path . isdir(newpath) :
wenjianjiapath . append(newpath)
wenjianjiapath . extend(getAllChildFolder(newpath))
except:
pass
return wenjianjiapath 本帖最后由 zy8818 于 2022-10-23 16:34 编辑
jackz007 发表于 2022-10-22 19:58
非常感谢,但是我还不清楚这个try的原理
如果try..except中间代码出错时正好在for循环执行到一半的时候,
这个时候是直接return,还是继续执行未执行完的for循环
因为读取文件字节数的时候也会出错,所以肯定有卡在for循环一半的时候出错 zy8818 发表于 2022-10-23 16:31
非常感谢,但是我还不清楚这个try的原理
如果try..except中间代码出错时正好在for循环执行到一半的时 ...
每个有可能导致灾难的语句都必须安排进 try ... except,让它们各自都有对应的风险管控措施,只有这样,才能保证代码顺畅执行。
页:
[1]