python 找质数的个数_用Python打造一款文件搜索工具,所有功能自己定义!

3204efa2fcd4176eaa7b18cfac573a0b.png

一、前言

大家好,又到了Python办公自动化系列。

在日常的办公中,我们经常会从一堆不同格式的文件(夹)中搜索特定的文件,可能你是凭着记忆去找或是借助软件,但你有想过如何用Python实现吗?本文将基于几个常见的搜索操作讲解

二、扫描路径内的内容

有些时候我们会希望在当前文件夹的成百上千个文件中快速找到需要的文件,如果这个文件夹又包括很多个子文件夹,并不需要程序进去查找而无端耗费资源。这就是典型的「扫描一层搜索」

1. 基于 os.scandir()

需求说明

❝输出C:Program Files (x86)路径下名字包含“Windows”的文件夹名称,并统计个数❞

步骤分析

这是一个非遍历的需求,只需要在目的文件夹内扫描一圈判断即可。用到的方法是os.scandir(),使用如下:

import ospath = ...
for file in os.scandir(path): print(file.name, file.path, file.is_dir())

上面代码最后输出的是给定路径下各内容的名字、绝对路径,并判断其是否是文件夹

需要注意的是os.scandir()只在路径下一级扫描,需求实现的代码如下(代码逻辑很简单,可以自己做相应调整):

import osnum = 0
for file in os.scandir(r'C:Program Files (x86)'):if file.is_dir():if 'Windows' in file.name:print(file.name)num += 1
print('含有Windows的文件夹个数为:', num)

6609968f1ec8416c3c98d99f66a699ab.png

2. 基于 os.listdir()

需求说明

❝输出C:Program Files (x86)路径下所有可执行文件 (即后缀为 .exe)❞

步骤分析

依然是非遍历的需求,这里使用os.listdir(),它比os.scandir()简单一些,可直接调用输出名称而非路径。后缀名可以用字符串的切片来判断,但难免失去灵活性。此时建议用字符串方法string.endswith()来判断名称的结尾是否是.exe,代码如下:

import os for file in os.listdir(r'C:Program Files (x86)'):if file.endswith('.exe'):print(file)

7bed71b7fe31d39711d5074a096c9339.png

三、遍历文件夹搜索文件

更多时候我们希望给定一个大概的路径,在这个路径下的所有文件夹里一层一层找,找到特定文件或者符合要求的文件,这里需要遍历文件,有两种主要的方法:

1. 基于 os.walk()

os.walk 遍历后产生三个参数:当前文件夹路径, 包含文件夹名称 [列表形式], 包含文件名称[列表形式]

可以用如下代码完成简单遍历:

import osfor dirpath, dirnames, filenames in os.walk(r'C:Program Files (x86)'):print(f'打开文件夹{dirpath}')if dirnames:print(dirnames)if filenames:print(filenames)print('-' * 10)

需求说明

❝遍历C:Program Files (x86)找出所有新版Excel文件 (即后缀为.xlsx)❞

步骤分析

只要理解了os.walk()的工作模式,用endswith()判断后缀即可。最后如果需要获得绝对路径可以把当前文件夹路径和文件名拼接,简单一点用 + 或者字符串格式化,也可以用os模块内的方法

import osfor dirpath, dirnames, filenames in os.walk(r'C:Program Files (x86)'):if filenames:for i in filenames:if i.endswith('.xlsx'):print(os.path.join(dirpath, i))

2. 基于非 os 方法:glob

glob在之前的推文也反复提到遍历框架:

import globfor file in glob.glob('**/*', recursive=True): print(file)

**/*的使用表示用通配符指代给定路径下的任何一层,recursive参数允许遍历搜索 由于glob可以使用「通配符」,大大拓宽了灵活程度,这里利用 glob 也来完成上面的需求

需求说明

❝遍历C:Program Files (x86)找出所有新版Excel文件(即后缀为.xlsx)❞
import globfor file in glob.glob('**/*.xlsx', recursive=True): print(file)

可以看到非常简单,在原有代码基础上加上后缀名就能够完成特定类型文件的搜索。如果需要搜索「特定文件」,如遍历C:Program Files (x86)找到文件practice.txt「只需要后一个*改成具体名称就行」

import globfor file in glob.glob('**/practice.txt', recursive=True): print(file)

四、写在最后

通过本文的Python自动化脚本制作过程,我们可以再次体会Python办公自动化的强大!

Python办公自动化系列代码:

https://github.com/liuhuanshuo/zaoqi-Python

当然本文只是基于几个简单的需求来讲解使用Python来制作搜索文件脚本的主要方法,接下来你可以结合之前的自动化案例或以根据自己的需求添加一些其他的规则或增加新的功能,打造出一款属于你的软件!

最后还是希望大家能够理解Python办公自动化的一个核心就是「批量操作-解放双手」,让复杂的工作自动化!

[声明]本文版权归原作者所有,内容为作者个人观点,转载目的在于传递更多信息,如涉及作品内容、版权等问题,可联系本站删除,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nessus安装_Nessus忘记密码怎么办?

最近公司购买了Nessus,才安装好,然后隔天密码就忘了,唉,人老了呀,记性不行了。网上看了一下,还是有比较多的同学也遇到这个问题,现将密码重置方法,分享给大家。系统环境:操作系统&am…

python爬取百度域名注册_python爬取百度域名_python爬取百度搜索結果url匯總

寫了兩篇之后,我覺得關於爬蟲,重點還是分析過程分析些什么呢:1)首先明確自己要爬取的目標比如這次我們需要爬取的是使用百度搜索之后所有出來的url結果2)分析手動進行的獲取目標的過程,以便以程序實現比如百度,我們先進…

python自动生成表格_Python自动整理 Excel 表格

相信有不少朋友日常工作会用到 Excel 处理各式表格文件,更有甚者可能要花大把时间来做繁琐耗时的表格整理工作。最近有朋友问可否编程来减轻表格整理工作量,今儿我们就通过实例来实现 Python 对表格的自动化整理。 首先我们有这么一份数据表 source.csv&…

flag的具体用法python_Python Qt.WindowFlags方法代码示例

# 需要导入模块: from PyQt5.QtCore import Qt [as 别名]# 或者: from PyQt5.QtCore.Qt import WindowFlags [as 别名]def updatePreview(self):flags Qt.WindowFlags()if self.windowRadioButton.isChecked():flags Qt.Windowelif self.dialogRadioButton.isChecked():flags…

graphpad prism画折线图_如何用Graphpad Prism 8作折线图

如何用Graphpad Prism 8作折线图如何用Graphpad Prism 8作折线图Prism 8 有8种数据类型,Prism数据表的格式决定可制作的图表种类和可执行的分析类型。选择一个数据表格式可以使Prism创建合适数据的数据表,然后创建所需的图形,执行适当的分析。…

sqlserver可视化工具_数据分析之基础分析工具篇(修订版)

原创:海峰996已经火了,你正在经历996吗,怎样才能避免,而又能在职场立足,工作效率是关键,那么先从选对工具开始吧。进入数据时代,大家都会进行或多或少的数据分析,那么现在的你正在使…

python中日期和时间格式化输出的方法小结_python中日期和时间格式化输出的方法小结...

本文实例总结了python中日期和时间格式化输出的方法。分享给大家供大家参考。具体分析如下:python格式化日期时间的函数为datetime.datetime.strftime();由字符串转为日期型的函数为:datetime.datetime.strptime(),两个函数都涉及…

java断点续传 http_http断点续传简单实现(java)

[月影读书频道 http://wf66.com/]fileSplitterFetch.splitterStop();}}//负责部分文件的抓取**FileSplitterFetch.java*/package NetFox;import java.io.*;import java.net.*;public class FileSplitterFetch extends Thread {String sURL; //File URLlong nStartPos; //File S…

windows下python环境搭建_Linux/Windows下Python环境搭建步骤

Python环境搭建首先到官网(www.python.org)下载相应的安装版本。主要分为Windows和Linux两种: 一、Linux下Python环境搭建 一般情况下,Linux系统都已经预安装好Python,但是版本都比较低,需要安装新的版本方…

oracle 同一列数据不同条件分组求和_艾瑞教育:有关Oracle数据库,你需要知道的几件事...

Oracle一、Oracle数据库在存储过程中,如何在字符串中使用变量?例:select to_char(sysdate,yyyymmdd) into v_yyyymmdd from dual;execute immediate(create table tableName_bk_ || v_yyyymmdd || as select * from TableName);将B表中符合关联条件的A…

java 对象流传输socket_Java Socket(二)使用TCP传输对象

在Java Socket使用TCP的基础上,通过ObjectInputStream和ObjectOutputStream来读写对象。//传输的对象,需要序列化package socket;import java.io.Serializable;public class MsgTO implements Serializable{private static final long serialVersionUID …

python量化策略源码_[Python源码] 十大经典日内策略之空中花园(附源码分享)

function kzhy(freq)% targetList traderGetTargetList(); %获取目标资产信息 HandleList traderGetHandleList(); %获取账户句柄 global upline; global dnline; if isempty(upline)||isempty(dnline) uplinezeros(length(targetList),1);%记录今天通道的上轨 dnlinezeros(l…

网络多人游戏架构与编程 电子书_Java互联网架构-高性能网络编程必备技能IO与NIO阻塞分析...

欢迎关注头条号:java小马哥周一至周日早九点半!下午三点半!精品技术文章准时送上!!!精品学习资料获取通道,参见文末一、概念NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同…

java 接口文件夹_Java NIO.2 使用Path接口来监听文件、文件夹变化

Java7对NIO进行了大的改进,新增了许多功能:•对文件系统的访问提供了全面的支持•提供了基于异步Channel的IO这些新增的IO功能简称为 NIO.2,依然在java.nio包下。早期的Java只提供了File类来操作文件、文件夹本身,功能有限&#x…

python能制作游戏吗_没有Python不能做的游戏,这些游戏都可以做

简介:Python编程语言的强大,几乎是众所周知的!那么,下面我给大家介绍一下几个用Python实现的各种游戏吧。不仅能用来做web、爬虫、数据分析等,没想到还能用做这么多的游戏,实在令人惊讶不已。注意:以下介绍…

vba excel 退出编辑状态_偷梁换柱之EXCEL编辑保护和VBA隐藏代码保护的解锁

如何解锁EXCEL表格编辑保护和VBA隐藏代码保护?当我们想借用别人的表格发现表格上锁无法编辑又不知道密码时或者当我们用软件生成一些表格时往往会遇到“上锁”问题,导致我们无法对表格进行改动。类似下图这样:那怎么才能征服她呢?…

java使用的页面静态化技术_java秒杀系列(2)- 页面静态化技术

###前言通过代码片段分别介绍服务端渲染、客户端渲染、对象缓存三种方式的写法。代码片段仅供参考,具体实现需要根据业务场景自行适配,但思想都是一样。一、服务端渲染方式####1、接口返回html页面的设置javaAutowiredThymeleafViewResolver thymeleafVi…

activex for chrome扩展程序 下载”_Chrome扩展程序一键生成网页骨架屏

对于依赖接口渲染的页面,在拿到数据之前页面往往是空白的,为了提示用户当前正在加载中,往往会使用进度条、loading图标或骨架屏的方式。对于前两种方案而言,实现比较简单;本文主要研究骨架屏的应用及实现,并…

python定时器 循环_python从写定时器学习Thread

python从写定时器学习Threadpython 如何写一个定时器,循环定时做某一操作呢?Timer 对象from threading import Timerdef hello():print "hello, world"t Timer(10.0, hello)t.start()10秒后输出:hello, world重点研究 t Timer(10…

java创建链表成绩管理系统_成绩管理系统 链表版

1.[代码][C/C]代码/**********************************************************程序描述:学生成绩管理系统*运行环境:Windows 7 SP1 X64*开发环境:CodeBlocks with Win7*作者:耗子、*时间:2015.03******************…