题目:遍历磁盘
给定一个路径(假设是d:\\),使用python代码实现遍历该路径下的所有文件(区分文件和文件夹)
def scanner_file(url):
files = os.listdir(url) # 返回当前目录中所有文件名称,以列表里字符串的形式返回
for f in files:
# real_path = url + "\\" +f
# real_path = url + os.sep + f
real_path = path.join(url, f) # 拼接当前目录和下面的所有文件,得到路径名
if path.isfile(real_path):
print(path.abspath(real_path)) # 如果是文件,直接打印
elif path.isdir(real_path): # 如果是文件夹,再次调用
scanner_file(real_path)
else:
print("其他情况")
pass
x = input('请输入你要遍历的磁盘:')
scanner_file(x)
结果:
请输入你要遍历的磁盘:d:\\ #部分遍历结果,有些权限不够拒绝访问
d:\$RECYCLE.BIN\S-1-5-21-1479519913-3793095182-2384208623-1001\$RB9ONBG.xls
d:\$RECYCLE.BIN\S-1-5-21-1479519913-3793095182-2384208623-1001\$RBQJSXK.xls
d:\$RECYCLE.BIN\S-1-5-21-1479519913-3793095182-2384208623-1001\$RCWOR2P.xls
d:\$RECYCLE.BIN\S-1-5-21-1479519913-3793095182-2384208623-1001\$RDQ7M34\eclipse.exe - 快捷方式.lnk
d:\$RECYCLE.BIN\S-1-5-21-1479519913-3793095182-2384208623-1001\$RDQ7M34\IntelliJ IDEA 2021.1.1 x64.lnk
d:\$RECYCLE.BIN\S-1-5-21-1479519913-3793095182-2384208623-1001\$RDQ7M34\python.pdf
d:\$RECYCLE.BIN\S-1-5-21-1479519913-3793095182-2384208623-1001\$RDQ7M34\QQ截图20231020143824.png
d:\$RECYCLE.BIN\S-1-5-21-1479519913-3793095182-2384208623-1001\$RDQ7M34\QQ截图20231020162113.png
。。。。。
Traceback (most recent call last):
File "D:\pycharm\10.py", line 20, in <module>
scanner_file(x)
File "D:\pycharm\10.py", line 13, in scanner_file
scanner_file(real_path)
File "D:\pycharm\10.py", line 5, in scanner_file
files = os.listdir(url) # 返回当前目录中所有文件名称,以列表里字符串的形式返回
PermissionError: [WinError 5] 拒绝访问。: 'd://Config.Msi'
部分同学电脑里只有C盘或者D盘权限拒绝访问,那我们可以用异常捕获(跳过报错的)来解决
import os
from os import path
def scanner_file(url):
files = os.listdir(url) # 返回当前目录中所有文件名称,以列表里字符串的形式返回
try:
for f in files:
# real_path = url + "\\" +f
# real_path = url + os.sep + f
real_path = path.join(url, f) # 拼接当前目录和下面的所有文件,得到路径名
if path.isfile(real_path):
print(path.abspath(real_path)) # 如果是文件,直接打印
elif path.isdir(real_path): # 如果是文件夹,再次调用
scanner_file(real_path)
else:
print("其他情况")
pass
except:
pass
x = input('请输入你要遍历的磁盘:')
scanner_file(x)