文氓阿志 发表于 2020-3-20 17:46:19

python30课第2题 权限错误

使用下面这个代码对单个文件夹运行的时候没有问题。
但对整个盘符进行搜索的时候就出现权限错误



请输入你要查找的初始目录:F:
Traceback (most recent call last):
File "E:\00_坚果云同步文件\00_Personal\00_Python\030\动动手2.py", line 24, in <module>
    search(start_dir,target)
File "E:\00_坚果云同步文件\00_Personal\00_Python\030\动动手2.py", line 12, in search
    search(each_file,target)
File "E:\00_坚果云同步文件\00_Personal\00_Python\030\动动手2.py", line 6, in search
    os.chdir(start_dir)
PermissionError: 拒绝访问。: 'System Volume Information'
>>>

在17年的帖子中找到答案,是因为权限问题。。。
https://fishc.com.cn/thread-90823-1-1.html

但我就是administrator 管理员权限。。还是一样错误。。

求解答。。

PS: 我查找的是我的移动硬盘。。 不知道是不是移动硬盘的权限?


# 定义搜索函数seach
def search(start_dir,target):
    os.chdir(start_dir)
    for each_file in os.listdir():
      ext = os.path.splitext(each_file)
      if ext in target:
            vediolist.append(os.getcwd()+os.sep+each_file)
      if os.path.isdir(each_file):
            search(each_file,target)
            os.chdir(os.pardir)
   

# 导入模块

import os
import os.path

start_dir = input("请输入你要查找的初始目录:")
target = [".avi",".rmvb",".mkv",".mpg",".wmv",".mp4"]
vediolist = []
search(start_dir,target)

f = open("vediolist.txt","w")
f.writelines(vediolist)
f.close()

zltzlt 发表于 2020-3-20 17:49:07

由于有些文件夹 Python 是无权访问的,所以要加 try-except:

# 定义搜索函数seach
def search(start_dir,target):
    try:
      os.chdir(start_dir)
      for each_file in os.listdir():
            ext = os.path.splitext(each_file)
            if ext in target:
                vediolist.append(os.getcwd()+os.sep+each_file)
            if os.path.isdir(each_file):
                search(each_file,target)
                os.chdir(os.pardir)
    except:
      pass
   

# 导入模块

import os
import os.path

start_dir = input("请输入你要查找的初始目录:")
target = [".avi",".rmvb",".mkv",".mpg",".wmv",".mp4"]
vediolist = []
search(start_dir,target)

f = open("vediolist.txt","w")
f.writelines(vediolist)
f.close()

_荟桐_ 发表于 2020-3-22 14:26:22

本帖最后由 _荟桐_ 于 2020-3-22 14:28 编辑

要用管理员权限运行python
页: [1]
查看完整版本: python30课第2题 权限错误