第六章:文件系统-shutil:高层文件操作-查找文件

本文介绍了Python中shutil模块的which()函数,用于在指定路径中查找文件,特别是可执行程序。文章演示了如何使用which()函数,并展示了如何自定义搜索路径和文件权限检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6.7.4 查找文件
which()函数会扫描一个路径以查找一个命名文件。典型的用法是在环境变量PATH定义的shell搜索路径中查找一个可执行程序。

import shutil

print(shutil.which('virtualenv'))
print(shutil.which('tox'))
print(shutil.which('no-such-program'))

如果无法找到与搜索参数匹配的文件,则which()会返回None。
运行结果:

None
None
None

which()接收参数,可以根据文件的权限和要检查的搜索路径来完成过滤。path参数默认为os.environ(‘PATH’),不过也可以是包含目录名并用os.pathsep分隔的任意字符串。mode参数应当是与文件权限对应的一个位掩码。默认地,这个掩码会查找可执行文件,不过下面的例子使用了可读位掩码和另外一个搜索路径来检查找一个配置文件。

import os
import shutil

path = os.pathsep.join(['.',os.path.expanduser('~/pymotw')])

mode = os.F_OK | os.R_OK

filename = shutil.which(
    'config.ini',
    mode=mode,
    path=path,
    )

print(filename)

以这种方式搜索可读文件时,可能还会出现竞态条件,因为在找到文件和真正使用这个文件的间隙,这个文件可能被删除或者它的权限可能改变。
运行结果:

None

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值