Python 官方文档:入门教程 => 点击学习
对一个运维来说可能会经常去查找目录下的一些文件是否存在,最常用的就是find命令,它不仅可以查找文件也可以查找目录,find命令用法查找文件[root@node1 opt]# find /usr/ -type f -name df/
对一个运维来说可能会经常去查找目录下的一些文件是否存在,最常用的就是find命令,它不仅可以查找文件也可以查找目录,find命令用法
查找文件
[root@node1 opt]# find /usr/ -type f -name df
/usr/bin/df
查找目录
[root@node1 opt]# find /usr/ -type d -name python
现在就讲一些如何用python实现这个简单功能,这里先将一下python os.walk函数的用法
首先 通过walk函数获取指定目录下的所有文件和目录,walk默认返回一个列表里面分别是
(“父目录”,“当前目录下的目录”,当前目录下的文件)下面实例:
[root@-node1 tmp]# mkdir -p /tmp/project/code/
[root@-node1 tmp]# mkdir -p /tmp/project/docs
[root@-node1 tmp]# touch /tmp/project/docs/readme.md
In [23]: import os
In [24]: res=os.wa
os.wait os.wait3 os.wait4 os.waitpid os.walk
In [24]: res=os.walk('/tmp/project')
In [25]: print res
<generator object walk at 0x28989b0>
In [26]: for i in res:
....: print i
....:
('/tmp/project', ['code', 'docs'], [])
('/tmp/project/code', [], [])
('/tmp/project/docs', [], ['readme.md'])
现在来实现一个文件查找函数把
首先大家查找文件有两种情况:知道完整文件名,知道文件名部分。
在这个函数里面需要你输入两个必要参数就是查找文件的目录,查找文件名,剩下一个非必要参数是否使用模糊搜索(在不知道全部文件名的时候会用到)。
下面的逻辑是使用os.walk获取到指定目录下的tree信息,如果当前目录下的文件有名字与输入名字相同的请输出文件路径和名称
[root@node1 opt]# cat pro1.py
def find_f(dir,Word,use_like=False):
res=os.walk(dir)
for tree_list in res:
for file_name in tree_list[2]:
if use_like == False:
if word == file_name:
print "{path}/{file}".fORMat(path=tree_list[0],file=file_name)
else:
if word in file_name:
print "{path}/{file}".format(path=tree_list[0],file=file_name)
find_f("/usr","ls")
[root@node1 opt]# python pro1.py
/usr/bin/ls
当然你也可以同样使用这个逻辑查找目录
def find_d(dir,word,use_like=False):
res=os.walk(dir)
for tree_list in res:
for dir_name in tree_list[1]:
if use_like == False:
if word == dir_name:
print "{path}/{dir}".format(path=tree_list[0],dir=dir_name)
else:
if word in dir_name:
print "{path}/{dir}".format(path=tree_list[0],dir=dir_name)
find_d("/usr/","python")
现在你可以感觉写两段代码有点麻烦,想要精简一下,这样就实现了简单的find功能
def find(dir,word,type='f',use_like=False):
res=os.walk(dir)
for tree_list in res:
if type == "f":
mt=2
elif type == "d":
mt=1
else:
print "This type %s is noexist" % type
for name in tree_list[mt]:
if use_like == False:
if word == name:
print "{path}/{name}".format(path=tree_list[0],name=name)
else:
if word in name:
print "{path}/{name}".format(path=tree_list[0],name=name)
find('/usr','ls')
--结束END--
本文标题: 如何用python写一个简单的find命
本文链接: https://www.lsjlt.com/news/186942.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0