使用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() 不能访问这种目录就行了。
或自己想办法获得对这些特殊文件的程序访问权,只是有没有这个必要。。
|