当前位置: 首页 > 科技观察

八个开箱即用的Python自动化脚本!_0

时间:2023-03-13 07:10:17 科技观察

您每天可能会执行很多重复性的工作,比如看新闻、发邮件、查天气、清理文件夹等。使用自动化脚本,您不需要一次又一次地手动完成这些工作,非常方便的。在某种程度上,Python是自动化的代名词。今天分享8个非常有用的Python自动化脚本。喜欢的话记得收藏、关注、点赞哦。1.自动朗读网页新闻本脚本可以抓取网页中的文字,然后自动语音朗读。当你想听新闻时,这是一个不错的选择。代码分为两部分,第一部分是通过爬虫爬取网页的文字,第二部分是通过阅读工具朗读文字。需要第三方库:BeautifulSoup-经典的HTML/XML文本解析器,用于提取爬取的网页信息。requests-好用的逆天HTTP工具,用于向网页发送请求获取数据。Pyttsx3-通过控制速率、频率和语音将文本转换为语音。importpyttsx3importrequestsfrombs4importBeautifulSoupengine=pyttsx3.init('sapi5')voices=engine.getProperty('voices')newVoiceRate=130##降低语音速率engine.setProperty('rate',newVoiceRate)engine.setProperty('voice',voices[1].id)defspeak(audio):engine.say(audio)engine.runAndWait()text=str(input("粘贴文章\n"))res=requests.get(text)soup=BeautifulSoup(res.text,'html.parser')articles=[]foriinrange(len(soup.select('.p'))):article=soup.select('.p')[i].getText().strip()articles.append(article)text="".join(articles)speak(text)#engine.save_to_file(text,'test.mp3')##如果要将语音保存为音频fileengine.runAndWait()2.自动化数据探索数据探索是数据科学项目的第一步。您需要了解数据的基本信息,才能进一步分析更深层次的价值。一般我们使用pandas、matplotlib等工具来探索数据,但是需要自己写很多代码。如果我们想提高效率,Dtale是一个不错的选择。Dtale的特点是一行代码生成自动化分析报告。它结合了Flask后端和React前端,为我们提供了一种查看和分析Pandas数据结构的简便方法。我们可以在Jupyter上使用Dtale。所需的第三方库:Dtale-自动生成分析报告。###为某些数据集导入Seaborn库simportseabornassns###打印Seaborn库的内置数据集print(sns.get_dataset_names())###加载泰坦尼克号数据集df=sns.load_dataset('titanic')###导入库importdtale####GeneratingQuickSummarydtale.show(df)3.自动发送多封邮件这个脚本可以帮助我们定时批量发送邮件。邮件的内容和附件也可以自定义调整,非常实用。与邮件客户端相比,Python脚本的优势在于可以智能、批量、定制化程度高地部署邮件服务。需要的第三方库:Email-用于管理电子邮件消息Smtlib-用于将电子邮件发送到SMTP服务器,它定义了一个SMTP客户端会话对象,该对象可以使用SMTP或ESMTP侦听器向Internet上的任何侦听器发送电子邮件ComputationalPandas-Toolsfor数据分析清洗。importsmtplibfromemail.messageimportEmailMessageimportpandasaspddefsend_email(remail,rsubject,rcontent):email=EmailMessage()##为EmailMessage创建一个对象email['from']='ThePythoneerHere'##Personwhoissendingemail['to']=remail##我们要发送给谁com',port=587)assmtp:smtp.ehlo()##服务器对象smtp.starttls()##用于在服务器和客户端之间发送数据smtp.login("deltadelta371@gmail.com","delta@371")##gmail登录id和密码smtp.send_message(email)##发送邮件print("emailsendto",remail)##打印成功messageif__name__=='__main__':df=pd.read_excel('list.xlsx')length=len(df)+1forindex,itemindf.iterrows():email=item[0]subject=item[1]content=item[2]send_email(email,subject,content)4.转换PDF为音频文件脚本可以将pdf转换为音频文件,原理也很简单,先用PyPDF提取pdf中的文字,然后用Pyttsx3转文字转语音导入pyttsx3,PyPDF2pdfreader=PyPDF2.PdfFileReader(open('story.pdf','rb'))speaker=pyttsx3.init()forpage_numinrange(pdfreader.numPages):text=pdfreader.getPage(page_num).extractText()##从PDF中提取文本cleaned_text=text.strip().replace('\n','')##删除不必要的空格和断行print(cleaned_text)##从PDF中打印文本#speaker.say(cleaned_text)##让演讲者说出文本speaker.save_to_file(cleaned_text,'story.mp3')##在音频文件'story.mp3'中保存文本speaker.runAndWait()speaker.stop()5.从listPlayrandommusic在这个脚本中会从歌曲文件夹中随机选择一首歌曲进行播放。需要注意的是os.startfile只支持Windows系统。importrandom,osmusic_dir='G:\\newenglishsongs'songs=os.listdir(music_dir)song=random.randint(0,len(songs))print(songs[song])##打印歌曲名称os.startfile(os.path.join(music_dir,songs[0]))6.智能天气信息国家气象局网站提供获取天气预报的API,直接返回json格式的天气数据。所以只需要从json中取出相应的字段即可。以下是指定市(县、区)的天气网址。如果直接打开网址,会返回对应城市的天气数据。例如:http://www.weather.com.cn/data/cityinfo/101021200.html上海市徐汇区对应的天气网站。具体代码如下:mportrequestsimportjsonimportloggingaslogdefget_weather_wind(url):r=requests.get(url)ifr.status_code!=200:log.error("Can'tgetweatherdata!")info=json.loads(r.content.decode())#获取风力数据data=info['weatherinfo']WD=data['WD']WS=data['WS']return"{}({})"。format(WD,WS)defget_weather_city(url):#打开url并获取返回数据r=requests.get(url)ifr.status_code!=200:log.error("Can'tgetweatherdata!")#将字符串转换为jsoninfo=json.loads(r.content.decode())#获取有用的数据data=info['weatherinfo']city=data['city']temp1=data['temp1']temp2=data['temp2']weather=data['weather']return"{}{}{}~{}".format(city,weather,temp1,temp2)if__name__=='__main__':msg="""**天气提示**:{}{}{}{}来源:国家气象局""".format(get_weather_city('http://www.weather.com.cn/data/cityinfo/101021200.html'),get_weather_wind('http://www.weather.com.cn/data/sk/101021200.html'),get_weather_city('http://www.weather.com.cn/data/cityinfo/101020900.html'),get_weather_wind('http://www.weather.com.cn/data/sk/101020900.html'))print(msg)结果如下:7.长网址变短网址有时候,那些大网址变得很烦人,难以阅读和分享,这只脚可以把长网址变成短网址从urllib.parse导入contextlib从urllib.request导入urlencode导入urlopen导入sysdefmake_tiny(url):request_url=('http://tinyurl.com/api-create.php?'+urlencode({'url':url}))withcontextlib.closing(urlopen(request_url))作为响应:返回response.read().decode('utf-8')defmain():fortinyurlinmap(make_tiny,sys.argv[1:]):print(tinyurl)if__name__=='__main__':main()这个脚本很实用。比如有些内容平台屏蔽了公众号文章,那么你可以把公众号文章的链接改成短链接,然后插入,就可以绕过8.清理下载文件夹里面最乱的事情之一world是开发者的下载文件夹,里面存放了很多乱七八糟的文件,这个脚本会根据大小限制清理你下载的文件夹,有限清理旧文件:importosimportthreadingimporttimedefget_file_list(file_path):#Filesare按最后修改时间排序dir_list=os.listdir(file_path)如果不是dir_list:returnelse:dir_list=sorted(dir_list,key=lambdax:os.path.getmtime(os.path.join(file_path,x)))returndir_listdefget_size(file_path):""[summary]Args:file_path([type]):[directory]??返回:[type]:返回目录大小,MB"""totalsize=0forfilenameinos.listdir(file_path):totalsize=totalsize+os.path.getsize(os.path.join(file_path,filename))#print(totalsize/1024/1024)returntotalsize/1024/1024defdetect_file_size(file_path,size_Max,size_Del):""[summary]Args:file_path([type]):[文件目录]size_Max([type]):[文件夹最大大小]size_Del([type]):[超过size_Max时要删除的大小]"""print(get_size(file_path))ifget_size(file_path)>size_Max:fileList=get_file_list(file_path)foriinrange(len(fileList)):ifget_size(file_path)>(size_Max-size_Del):打印("del:%d%s"%(i+1,fileList[i]))#os.remove(file_path+fileList[i])