自动化脚本编写实例-python,简单的python脚本实例
本文已经为大家带来了一些关于Python的知识,主要梳理了自动化脚本的相关问题,包括web新闻的自动阅读、数据的自动探索、多封邮件的自动发送等等。下面就一起来看看吧,希望对你有帮助。
【相关推荐:Python3视频教程】
你可能每天都要执行很多重复的任务,比如看新闻、发邮件、查天气、打开书签、清理文件夹等。使用自动化脚本,就不需要一次次手动完成这些任务,非常方便。在某种程度上,Python是自动化的代名词。
今天分享几个非常有用的Python自动化脚本。
00-1010这个脚本可以从网页上抓取文本,然后自动阅读。想听新闻的时候是个不错的选择。
代码分为两部分,第一部分是通过爬虫抓取网页文本,第二部分是通过阅读工具朗读文本。
必需的第三方库:
一个经典的HTML/XML文本解析器,用来提取被抓取的网页的信息。
requests——一个易于使用的HTTP工具,用于向网页发送请求以获取数据。
pyttsx 3-转换文本为语音,并控制速度,频率和语音。
导入pyttsx3
导入请求
从bs4导入BeautifulSoup
engine=pyttsx3.init(sapi5 )
voices=engine . getproperty( voices )
newVoiceRate=130 ##降低语音速率
engine.setProperty(rate ,newVoiceRate)
engine.setProperty(voice ,voices[1])。id)
def扬声器(音频):
engine.say(音频)
engine.runAndWait()
text=str(input(粘贴文章\n ))
res=requests.get(文本)
soup=BeautifulSoup(res.text, html.parser )
文章=[]
对于范围内的I(len(soup . select(。p))):
article=soup.select(。p )[我]。getText()。条状()
articles.append(文章)
文本=“”。加入(文章)
朗读(文本)
# engine.save_to_file(text, test.mp3) ##如果您想将语音保存为音频文件
Engine.runAndWait()
1、自动化阅读网页新闻
数据探索是数据科学项目的第一步。你需要了解数据的基本信息,才能进一步分析其更深层次的价值。一般我们用pandas,matplotlib等工具来探索数据,但是需要自己写很多代码。如果想提高效率,Dtale是个不错的选择。
Dtale的特点是用一行代码生成自动分析报告,结合了Flask后端和React前端,为我们提供了一种简单的查看和分析Pandas数据结构的方法。
我们可以在Jupyter上使用Dtale。
必需的第三方库:
dtale-自动生成分析报告
###为某些数据集导入Seaborn库
将seaborn作为sns导入
###打印Seaborn库的内置数据集
print(sns.get_dataset_names())
###正在加载泰坦尼克号数据集
df=sns.load_dataset(泰坦尼克)
###导入库
导入数据标签
####生成快速摘要
显示(df)
00-1010这个脚本可以帮助我们定时批量发送邮件,邮件内容和附件也可以自定义调整,非常实用。
与邮件客户端相比,Python脚本的优势在于可以智能、批量、高度定制地部署邮件服务。
必需的第三方库:
电子邮件-用于管理电子邮件消息。
smtlib——向SMTP服务器发送电子邮件,SMTP服务器定义了一个SMTP客户端会话对象,它可以通过SMTP或ESMTP侦听器向Internet上的任何计算机发送电子邮件。
熊猫-用于数据分析和清理
地工具
import smtplibfrom email.message import EmailMessage
import pandas as pd
def send_email(remail, rsubject, rcontent):
email = EmailMessage() ## Creating a object for EmailMessage
email['from'] = 'The Pythoneer Here' ## Person who is sending
email['to'] = remail ## Whom we are sending
email['subject'] = rsubject ## Subject of email
email.set_content(rcontent) ## content of email
with smtplib.SMTP(host='smtp.gmail.com',port=587)as smtp:
smtp.ehlo() ## server object
smtp.starttls() ## used to send data between server and client
smtp.login("deltadelta371@gmail.com","delta@371") ## login id and password of gmail
smtp.send_message(email) ## Sending email
print("email send to ",remail) ## Printing success message
if __name__ == '__main__':
df = pd.read_excel('list.xlsx')
length = len(df)+1
for index, item in df.iterrows():
email = item[0]
subject = item[1]
content = item[2]
send_email(email,subject,content)
4、将 PDF 转换为音频文件
脚本可以将 pdf 转换为音频文件,原理也很简单,首先用 PyPDF 提取 pdf 中的文本,然后用 Pyttsx3 将文本转语音。
import pyttsx3,PyPDF2pdfreader = PyPDF2.PdfFileReader(open('story.pdf','rb'))
speaker = pyttsx3.init()
for page_num in range(pdfreader.numPages):
text = pdfreader.getPage(page_num).extractText() ## extracting text from the PDF
cleaned_text = text.strip().replace('\n',' ') ## Removes unnecessary spaces and break lines
print(cleaned_text) ## Print the text from PDF
#speaker.say(cleaned_text) ## Let The Speaker Speak The Text
speaker.save_to_file(cleaned_text,'story.mp3') ## Saving Text In a audio file 'story.mp3'
speaker.runAndWait()
speaker.stop()
5、从列表中播放随机音乐
这个脚本会从歌曲文件夹中随机选择一首歌进行播放,需要注意的是 os.startfile 仅支持 Windows 系统。
import random, osmusic_dir = 'G:\\new english songs'
songs = os.listdir(music_dir)
song = random.randint(0,len(songs))
print(songs[song]) ## Prints The Song Name
os.startfile(os.path.join(music_dir, songs[0]))
6、智能天气信息
国家气象局网站提供获取天气预报的 API,直接返回 json 格式的天气数据。所以只需要从 json 里取出对应的字段就可以了。下面是指定城市(县、区)天气的网址,直接打开网址,就会返回对应城市的天气数据。比如:
http://www.weather.com.cn/data/cityinfo/101021200.html 上海徐汇区对应的天气网址。
具体代码如下:
mport requests运行结果如下所示:import json
import logging as log
def get_weather_wind(url):
r = requests.get(url)
if r.status_code != 200:
log.error("Can't get weather data!")
info = json.loads(r.content.decode())
# get wind data
data = info['weatherinfo']
WD = data['WD']
WS = data['WS']
return "{}({})".format(WD, WS)
def get_weather_city(url):
# open url and get return data
r = requests.get(url)
if r.status_code != 200:
log.error("Can't get weather data!")
# convert string to json
info = json.loads(r.content.decode())
# get useful data
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、长网址变短网址
有时,那些大URL变得非常恼火,很难阅读和共享,此脚可以将长网址变为短网址。
import contextlib这个脚本非常实用,比如说有内容平台是屏蔽公众号文章的,那么就可以把公众号文章的链接变为短链接,然后插入其中,就可以实现绕过from urllib.parse import urlencode
from urllib.request import urlopen
import sys
def make_tiny(url):
request_url = ('http://tinyurl.com/api-create.php?' +
urlencode({'url':url}))
with contextlib.closing(urlopen(request_url)) as response:
return response.read().decode('utf-8')
def main():
for tinyurl in map(make_tiny, sys.argv[1:]):
print(tinyurl)
if __name__ == '__main__':
main()
8、清理下载文件夹
世界上最混乱的事情之一是开发人员的下载文件夹,里面存放了很多杂乱无章的文件,此脚本将根据大小限制来清理您的下载文件夹,有限清理比较旧的文件:
import os【相关推荐:Python3视频教程 】以上就是实例分享8个Python自动化脚本的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!import threading
import time
def get_file_list(file_path): #文件按最后修改时间排序
dir_list = os.listdir(file_path)
if not dir_list:
return
else:
dir_list = sorted(dir_list, key=lambda x: os.path.getmtime(os.path.join(file_path, x)))
return dir_list
def get_size(file_path):
"""[summary]
Args:
file_path ([type]): [目录]
Returns:
[type]: 返回目录大小,MB
"""
totalsize=0
for filename in os.listdir(file_path):
totalsize=totalsize+os.path.getsize(os.path.join(file_path, filename))
#print(totalsize / 1024 / 1024)
return totalsize / 1024 / 1024
def detect_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))
if get_size(file_path) > size_Max:
fileList = get_file_list(file_path)
for i in range(len(fileList)):
if get_size(file_path) > (size_Max - size_Del):
print ("del :%d %s" % (i + 1, fileList[i]))
#os.remove(file_path + fileList[i])
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。