|
40鱼币
使用os.walk可以访问磁盘根目录,但是使用下面自定义函数的代码访问磁盘根目录则会显示权限相关的报错(对磁盘根目录下的子目录使用则没有问题)。
请问这是怎么回事?
- def search():
- import os
- index_path=input('请输入待查找的初始目录:')
- os.chdir(index_path)
- f=open('vedioList.txt','w')
- def open_file():
- for i in os.listdir():
- if os.path.splitext(i)[1] in ['.mp4','.rmvb','.avi']:
- f.writelines(str(os.getcwd())+os.sep+i+'\n')
- if os.path.isdir(i):
- os.chdir(i)
- open_file()
- os.chdir(os.pardir)
- open_file()
- f.close()
- search()
复制代码- ===================== RESTART: D:\python\works\特异性文件类型搜索.py ====================
- 请输入待查找的初始目录:D:\
- Traceback (most recent call last):
- File "D:\python\works\特异性文件类型搜索.py", line 16, in <module>
- search()
- File "D:\python\works\特异性文件类型搜索.py", line 14, in search
- open_file()
- File "D:\python\works\特异性文件类型搜索.py", line 12, in open_file
- open_file()
- File "D:\python\works\特异性文件类型搜索.py", line 11, in open_file
- os.chdir(i)
- PermissionError: [WinError 5] 拒绝访问。: 'S-1-5-18'
复制代码- >>> for root, dirs, files in os.walk('D:\\', topdown=True):
- for name in files:
- print(os.path.join(root, name))
- for name in dirs:
- print(os.path.join(root, name))
-
- D:\1234.txt
- D:\out.log
- D:\ReadMe.txt
- D:\$RECYCLE.BIN
- D:\30b1efe61c9c9b4684d312175e6563f1
- D:\Epic
- D:\Origin
- D:\Program Files
- D:\Program Files (x86)
- D:\PyCharm 2021.1.2
- D:\python
- D:\Riot Games
- D:\steam
- D:\System Volume Information
- D:\Unigame
- D:\WindowsApps
复制代码
本帖最后由 阿奇_o 于 2021-6-12 14:28 编辑
D盘的专用回收目录是 D:\$RECYCLE.BIN
和C盘的不同,我这D盘的$RECYCLE.BIN 可以直接访问改为当前工作目录,但不能写入,就是这样怪~
反正,就是特定权限的问题。。原因应该就是这个,具体怎样我就不管了。
这种特殊目录,没必要深究,知道是因为 os.chdir() 不能访问这种目录就行了。
或自己想办法获得对这些特殊文件的程序访问权,只是有没有这个必要。。
|
最佳答案
查看完整内容
D盘的专用回收目录是 D:\$RECYCLE.BIN
和C盘的不同,我这D盘的$RECYCLE.BIN 可以直接访问改为当前工作目录,但不能写入,就是这样怪~
反正,就是特定权限的问题。。原因应该就是这个,具体怎样我就不管了。
这种特殊目录,没必要深究,知道是因为 os.chdir() 不能访问这种目录就行了。
或自己想办法获得对这些特殊文件的程序访问权,只是有没有这个必要。。
|