今天7月1号,周日,学习到了文件模块,就写了一个文件查找的脚本,哈哈,脚本挺强大的额。。。你隐藏的东西都能查得到额。。。
先写一下脚本里面用到的知识
1、字符串拼接
1.1直接使用+进行连接
strName='zhangzichao ' + 'is ' + 'good boy'
print(strName)
结果:zhangzichao is good boy
备注:zhangzichao和is后面都有一个空格
1.2使用join方式连接
strName1=['zhangzichao','is','good boy']
print(''.join(strName))
结果:zhangzichao is good boy
备注:zhangzichao和is后面都没有空格
1.3使用替换方式连接
strName2='%s%s%s' % ('zhangzichao ','is ','good boy')
print(strName2)
结果:zhangzichao is good boy
备注:zhangzichao和is后面都有一个空格
区别:从效率方面来说,如果连接内容很少,推荐使用+方式连接,如果内容比较多,推荐使用替换方式连接,如果是list方式,推荐使用join方式
2、文件夹知识
os.path.abspath(path),显示path在操作系统中的绝对路径
os.path.join(path, x),将path和x拼接成当前操作系统兼容的路径形式
os.listdir(path),输出当前目录下的文件及子目录为list类型
os.path.isdir(path) and os.path.isfile(path)判断路径为目录还是文件,注意参数为path,这里的path是绝对路径
那么接下来看下我的文件路径,file文件夹下面有两个文件夹和两个文件,两个文件夹下面又分别有文件
2.1 listdir读取到一个目录下面所有的文件名,然后使用os.path.join把目录的路径和文件名结合起来,就得到了文件的绝路路径,从下面运行的结果可以看出,如果要得到每个文件listdir是不行的,其实这种方式可以通过递归遍历方式得到,一会脚本里面会有体验
2.2使用os.walk
其中dirPath列出了目录路径 f:\file
dirName列出了目录路径下面所有存在的目录的名称 file下面的两个目录 filex filey
fileNames列出了目录路径下面所有文件的名称
得到目录下的每个文件
那么上面内容理解了,下面看具体脚本,search是递归方式,search1是os.walk函数方式
# 查找某个目录下的目标文件
import os# 引入操作系统模块
import easyguias g# 引入图形用户界面
result_list= []
def search(filePath,fileName):
for fileNin os.listdir(filePath):
file_dir= os.path.join(filePath, fileN)
if (os.path.isfile(file_dir))and (fileName in fileN):
result_list.append(file_dir)
elif os.path.isdir(file_dir):
search(file_dir,fileName)
def search1(filePath1,fileName):
for dirPath,dirName,fileNamesin os.walk(filePath1):
for filenamein fileNames:
if fileName in filename:
result_list.append(os.path.join(dirPath,filename))
strPath= 'cdefhjkg' # 默认盘符
strResult=''
path= g.enterbox(msg='请输入文件所在盘符(如:C').rstrip()
path= path.lower()[0]# 截取输入的第一个字符
if pathin strPath: #判定输入的第一个字符是否为默认盘符内容
path= path+ ':\\' # 拼接字符串路径格式如:c:\
name= g.enterbox(msg='请输入您要查找的文件名').rstrip()
search1(path, name)
if result_list.__len__()> 0: #查询到了
for pathin result_list:
strResult+= path+'\n'
g.msgbox(strResult)
else:g.msgbox('没有该文件','没有找到')#没有找到
else:
g.msgbox('请输入正确的盘符')
网友评论