python随手小练7

31 篇文章 0 订阅
14 篇文章 2 订阅

题目:遍历磁盘

给定一个路径(假设是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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值