大家好,我是杰杰。今天介绍一个Python库【filestools】,它是由一位知名人士开发的。filestools库当前包含四个工具包。我非常喜欢这四个功能。它们是:Ⅰ树目录展示;Ⅱ文本文件差异比较;Ⅲ图片水印;代码;该库需要先安装才能使用。一行命令即可搞定:pipinstallfilestools-ihttps://pypi.org/simple/-U1。树形目录展示这个功能可以帮助我们递归展示指定目录下的所有文件和文件夹,并且展示每个文件和文件夹的大小,一目了然。下面以windows为例进行说明。整个操作都是在CMD黑色窗口中进行的。首先,你要学会如何切换到指定磁盘,指定目录。#这样就可以将C盘切换到D盘C:\Users\Administrator>D:#使用cd命令切换到指定盘的指定目录C:\Users\Administrator>cdC:\Users\Administrator\Desktop\python三剑客\加盟店爬虫有两个命令:tree和tree2。如果你的系统,本地python的优先级高于系统环境的优先级,直接执行tree命令;如果你的系统,因为系统环境的优先级高于本地python,除了调整环境变量的顺序来修改优先级外,还可以使用tree2命令,与tree一致.但是此时如果执行tree命令,是看不到效果的;基于我的电脑,给大家演示一下:大家可以看到:我这里执行的是tree命令,显示的是安装库前的系统显示。这是由于系统环境优先于本地python。此时,我们可以直接执行tree2命令。当然,大家都不喜欢在CMD窗口执行命令。这里我们直接在jupyternotebook中进行如下操作:fromtreedir.treeimporttree_dirtree_dir(r"C:\Users\Administrator\Desktop\pythonThreeMusketeers\FranchiseStoreCrawler",m_level=7,no_calc=False)结果为如下:关于tree_dir()函数,分别引入以下三个参数:path:递归显示的目录路径,默认为当前目录;m_level:递归显示的最大层数,默认7层;no_calc:指定该参数后,对于超过递归显示层数最大的文件夹,将不会继续递归计算文件夹的大小;2.文本文件差异比较这个功能可以帮助我们比较两个文件之间的差异,并输出到HTML网页中。比如我们写了一段代码,后来改了。但是因为代码太多,不知道改哪里。这个时候使用这个功能,对我们进行比较很有帮助。我们来看这样一个例子。我曾经有一个a.txt文件。过了一段时间,修改了内容,得到了最终的b.txt。需求:想看看哪里修改了(如果内容很多的话)fromfilediff.diffimportfile_diff_comparefile_diff_compare("a.txt","b.txt")这样会在当前工作生成一个html网页文件目录。双击打开观察内容:其中:黄色表示修改的内容,绿色表示新增内容,红色表示删除的内容。对于file_diff_compare()函数,有以下7个参数:fromfilediff.diffimportfile_diff_comparefile_diff_compare(file1,file2,diff_out='diff_result.html',max_width=70,numlines=0,show_all=False,no_browser=False)对于这7个参数介绍如下:file1/file2:要比较的两个文件必须是文本文件;diff_out:保存差异结果的文件名(web格式),默认为diff_result.html;max_width:每行的字符数会自动换行,默认值为70;numlines:差异行前后显示多少行,默认为0;show_all:只要设置了这个参数,就表示显示所有的原始数据。此时-n参数无效,默认不显示全部;no_browser:设置该参数,生成结果后,不自动打开浏览器。设置为False时,浏览器会自动打开;3.给图片加水印这应该是我见过最好的给图片加水印的代码了。图片加水印调用add_mark()函数。fromwatermarker.markerimportadd_mark#注意:部分参数为默认参数,可随意修改;add_mark(file,mark,out='output',color='#8B8B1B',size=30,opacity=0.15,space=75,angle=30)关于add_mark()函数,分别介绍以下8个参数:file:要加水印的照片;mark:哪些词被用作水印;out:添加水印后保存水印的位置;color:水印字体的颜色,默认颜色为#8B8B1B;size:水印字体的大小,默认为50;opacity:水印字体的透明度,默认0.15;space:水印字体之间的间隔,默认为75个空格;angle:水印字体的旋转角度,默认为30比如我们执行如下命令:fromwatermarker.markerimportadd_markadd_mark(file=r"C:\Users\Administrator\Desktop\University.jpg",out=r"C:\Users\Administrator\Desktop\python三剑客\加盟店爬虫",mark="黄同学",opacity=0.2,angle=30,space=30)我们要给大学加个黄同学水印.jpg,保存位置在加盟店爬虫文件夹下,透明度0.2,旋转角度30°,字体间距30。原图如下:最终效果如下:4.curlnetworkrequesttorequestslibraryrequestcode我们在写爬虫的时候经常会用到一些参数信息,比如这样:如果手动一个一个的复制,会不会很麻烦?这个函数可以解决这个问题,它可以将cURL转成Python代码,我们只需要复制即可。大致步骤如下:Ⅰ首先在谷歌浏览器中将网络捕获的网络请求复制为cURL(bash);Ⅱ使用curl2py命令转换成python代码;以实践网的Python贴为例进行说明。http://www.shixi.com/search/i...我们根据下图复制了单个请求的curl。可以看到:这里有各种请求url,然后-H后面是请求对应的各种参数。我们需要请求哪个链接,复制对应的curl。仔细看下图:复制curl后,粘贴出来看看都有什么。curl'http://www.shixi.com/search/index?key=python'\-H'Connection:keep-alive'\-H'Cache-Control:max-age=0'\-H'Upgrade-Insecure-Requests:1'\-H'User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/91.0.4472.124Safari/537.36'\-H'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'\-H'Referer:http://www.shixi.com/'\-H'Accept-Language:zh-CN,zh;q=0.9'\-H'Cookie:UM_distinctid=17a50a2c8ea537-046c01e944e72f-6373267-100200-17a50a2c8eb4ff;PHPSESSID=rpprvtdrcrvt54fkr7msgcde17;CNZZDATA1261027457=1711789791-1624850487-https%253A%252F%252Fwww.baidu.com%252F%7C1627741311;hm_lvt_536f42de0bcce9241264ac5d50172db7=1627741268;hm_lpvt_536f42de0bcce9241264ac5d50172db7=1627741334'\--compressed\--insecure有上面描述的curling后可以通过curl2py命令转成python代码。fromcurl2py.curlParseToolimportcurlCmdGenPyScriptcurl_cmd="""curl'http://www.shixi.com/search/index?key=python'\-H'Connection:keep-alive'\-H'Cache-Control:max-age=0'\-H'Upgrade-Insecure-Requests:1'\-H'User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/91.0.4472.124Safari/537.36'\-H'接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'\-H'Referer:http://www.shixi.com/'\-H'Accept-Language:zh-CN,zh;q=0.9'\-H'Cookie:UM_distinctid=17a50a2c8ea537-046c01e944e72f-6373267-100200-17a50a2c8eb4ff;PHPSESSID=rpprvtdrcrvt54fkr7msgcde17;CNZZDATA1261027457=1711789791-1624850487-https%253A%252F%252Fwww.baidu.com%252F%7C1627741311;Hm_lvt_536f42de0bcce9241264ac5d50172db7=1627741268;Hm_lpvt_536f42de0bcce9241264ac5d50172db7=1627741334'\--compressed\--insecure"""output=curlCmdGenPyScript(curl_cmd)print(output)的最终结果如下:可以看到很多参数都被转换成了常规的Python代码。我们可以直接使用它们。是不是很方便?如果您觉得本文对您有帮助的话,记得不要忘记三连,您的肯定将是我继续输出更多优质文章的最强大动力!
