You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
python-project/op/find.py

50 lines
1.7 KiB

3 years ago
# 帮助用户查找文件
# 由于windows自带的文件查找很是垃圾,所以我们自己写了一个查找文件的程序
# 1、用户输入文件的关键字
# 2、用户可以输入一个大概的位置,如果用户不输入,默认为/
# 3、返回查找了多少个文件和找到了相关的文件有多少
import os
allfile = []
kwfile = []
def check_exists(dir):
if os.path.exists(dir):
return True
else:
print('目录不存在,使用默认目录')
global p
if os.name == 'nt':
p = 'c:\\'
elif os.name == 'posix':
p = '/'
# 功能相关
def check_abs(path):
os.chdir(path)
return os.path.abspath(path)
kw = input('请输入需要查询文件中的关键字[default "network"]:')
if kw == '':
kw = 'network'
p = input('请输入文件的大概位置[default C:|/]:')
check_exists(p)
def main(path):
path = check_abs(path) # 执行函数修改成绝对路径 用户输入./test,cd ./test && pwd
dirlist = os.listdir(path) # 列表 = ls -A ./
for i in dirlist: # 循环这个列表,获得目录下面的所有文件
allfile.append(os.path.join(path,i)) # 将文件追加到空列表 allfile 中
if os.path.isdir(os.path.join(path,i)): # 使用isdir来判断是否是目录
main(os.path.join(path,i))
if kw in i: # 使用in来判断是否包含关键字
kwfile.append(os.path.join(path,i))
main(p)
for i in kwfile:
print(i)
print(f'{len(allfile)}个文件中进行了查找')
print(f'共查找到{len(kwfile)}个相关文件')