大家好,Python凭借其简单和通用性,能够为解决每天重复同样的工作提供最佳方案。本文将探索10个Python脚本,这些脚本可以帮助自动化完成任务,提高工作效率。无论是开发者、数据分析师还是仅仅想简化工作流程的普通用户,这些脚本都能提供帮助。
#?Python脚本,用于根据文件扩展名对目录中的文件进行排序
import?os
from?shutil?import?move
def?sort_files(directory_path):
??for?filename?in?os.listdir(directory_path):
????if?os.path.isfile(os.path.join(directory_path,?filename)):
??????file_extension?=?filename.split('.')[-1]
??????destination_directory?=?os.path.join(directory_path,?file_extension)??
??????if?not?os.path.exists(destination_directory):
????????os.makedirs(destination_directory)
??????move(os.path.join(directory_path,?filename),?os.path.join(destination_directory,?filename))
根据文件扩展名将文件分类到子目录中,来组织目录中的文件。它识别文件扩展名并将文件移动到适当的子目录中,这对于整理下载文件夹或组织特定项目的文件非常有用。?
#?Python脚本,用于删除目录中的空文件夹
import?os
def?remove_empty_folders(directory_path):
??for?root,?dirs,?files?in?os.walk(directory_path,?topdown=False):
????for?folder?in?dirs:
??????folder_path?=?os.path.join(root,?folder)
??????if?not?os.listdir(folder_path):
????????os.rmdir(folder_path)
脚本用于在指定目录中搜索和删除空文件夹,维护干净整洁的文件夹结构,特别是在处理大量数据集时。
#?Python脚本,用于批量重命名目录中的文件
import?os
def?rename_files(directory_path,?old_name,?new_name):
??for?filename?in?os.listdir(directory_path):
????if?old_name?in?filename:
??????new_filename?=?filename.replace(old_name,?new_name)
??????os.rename(os.path.join(directory_path,?filename),?os.path.join(directory_path,?new_filename))
脚本允许同时批量重命名目录中的多个文件。它以旧名称和新名称作为输入,并将所有匹配的文件中的旧名称替换为新名称。
#?使用Python进行网页抓取的脚本,以从网站中提取数据
import?requests
from?bs4?import?BeautifulSoup
def?scrape_data(url):
??response?=?requests.get(url)
??soup?=?BeautifulSoup(response.text,?'html.parser')
??#?在此处编写代码,从网站中提取相关数据
脚本利用requests和BeautifulSoup库来抓取网站的数据。它获取网页内容并使用BeautifulSoup解析HTML,可以自定义该脚本以提取诸如标题、产品信息或价格等特定数据。?
#?Python脚本,用于从网站批量下载图片
import?requests
def?download_images(url,?save_directory):
??response?=?requests.get(url)
??if?response.status_code?==?200:
????images?=?response.json()?#?假设API返回图片URL的JSON数组
????for?index,?image_url?in?enumerate(images):
??????image_response?=?requests.get(image_url)
??????if?image_response.status_code?==?200:
????????with?open(f"{save_directory}/image_{index}.jpg",?"wb")?as?f:
??????????f.write(image_response.content)
脚本旨在从网站批量下载图片,它假设该网站提供一个返回图片URL数组的JSON API。该脚本然后遍历这些URL并下载图片,将其保存到指定的目录中。?
#?Python脚本,用于自动在网站上提交表单
import?requests
def?submit_form(url,?form_data):
??response?=?requests.post(url,?data=form_data)
??if?response.status_code?==?200:
????#?在此处编写代码以处理表单提交后的响应
脚本使用POST请求以表单数据自动在网站上提交表单,可以通过提供URL和要提交的表单数据来自定义该脚本。
#?Python脚本,用于统计文本文件中的单词数
def?count_words(file_path):
??with?open(file_path,?'r')?as?f:
????text?=?f.read()
????word_count?=?len(text.split())
??return?word_count
脚本读取文本文件并统计其中包含的单词数,可以用于快速分析文本文档的内容,或跟踪写作项目中的字数。
#?Python脚本,用于在文件中查找和替换文本
def?find_replace(file_path,?search_text,?replace_text):
??with?open(file_path,?'r')?as?f:
????text?=?f.read()
????modified_text?=?text.replace(search_text,?replace_text)
??with?open(file_path,?'w')?as?f:????
????f.write(modified_text)
脚本在文件中搜索特定文本并将其替换为所需文本,它对批量替换大型文本文件中的某些短语或更正错误非常有用。
#?Python脚本,用于生成随机文本
import?random
import?string
def?generate_random_text(length):
??letters?=?string.ascii_letters?+?string.digits?+?string.punctuation??
??random_text?=?''.join(random.choice(letters)?for?i?in?range(length))
??return?random_text
脚本生成指定长度的随机文本,可用于测试和模拟目的,甚至作为创作的随机内容源。
#?Python脚本,用于向收件人列表发送个性化电子邮件
import?smtplib
from?email.mime.text?import?MIMEText
from?email.mime.multipart?import?MIMEMultipart
def?send_personalized_email(sender_email,?sender_password,?recipients,?subject,?body):
??server?=?smtplib.SMTP('smtp.gmail.com',?587)
??server.starttls()
??server.login(sender_email,?sender_password)
??for?recipient_email?in?recipients:
????message?=?MIMEMultipart()??
????message['From']?=?sender_email
????message['To']?=?recipient_email
????message['Subject']?=?subject??
????message.attach(MIMEText(body,?'plain'))
????server.sendmail(sender_email,?recipient_email,?message.as_string())
??server.quit()
脚本能够向收件人列表发送个性化电子邮件,可以自定义发件人的电子邮件、密码、主题、正文以及收件人列表。请注意,出于安全考虑,使用Gmail时应使用应用专用密码。
#?Python脚本,用于发送带有附件的电子邮件
import?smtplib
from?email.mime.multipart?import?MIMEMultipart
from?email.mime.base?import?MIMEBase
from?email?import?encoders
def?send_email_with_attachment(sender_email,?sender_password,?recipient_email,?subject,?body,?file_path):
??server?=?smtplib.SMTP('smtp.gmail.com',?587)
??server.starttls()
??server.login(sender_email,?sender_password)
??message?=?MIMEMultipart()
??message['From']?=?sender_email
??message['To']?=?recipient_email
??message['Subject']?=?subject
??message.attach(MIMEText(body,?'plain'))
??with?open(file_path,?"rb")?as?attachment:
????part?=?MIMEBase('application',?'octet-stream')
????part.set_payload(attachment.read())
????encoders.encode_base64(part)
????part.add_header('Content-Disposition',?f"attachment;?filename=?{file_path}")
????message.attach(part)
??server.sendmail(sender_email,?recipient_email,?message.as_string())
??server.quit()
脚本允许发送带有附件的电子邮件,只需提供发件人的电子邮件、密码、收件人的电子邮件、主题、正文以及要附加的文件的路径即可。
#?Python脚本,用于发送自动电子邮件提醒
import?smtplib??
from?email.mime.text?import?MIMEText
from?datetime?import?datetime,?timedelta
def?send_reminder_email(sender_email,?sender_password,?recipient_email,?subject,?body,?reminder_date):
??server?=?smtplib.SMTP('smtp.gmail.com',?587)
??server.starttls()
??server.login(sender_email,?sender_password)
??now?=?datetime.now()
??reminder_date?=?datetime.strptime(reminder_date,?'%Y-%m-%d')
??if?now.date()?==?reminder_date.date():
????message?=?MIMEText(body,?'plain')
????message['From']?=?sender_email??
????message['To']?=?recipient_email
????message['Subject']?=?subject
????server.sendmail(sender_email,?recipient_email,?message.as_string())
??server.quit()
脚本基于指定日期发送自动电子邮件提醒,对设置重要任务或事件的提醒非常有用,确保不会错过最后期限。
#?Python脚本,用于读写Excel电子表格中的数据
import?pandas?as?pd
def?read_excel(file_path):
??df?=?pd.read_excel(file_path)
??return?df
def?write_to_excel(data,?file_path):
??df?=?pd.DataFrame(data)
??df.to_excel(file_path,?index=False)?
脚本使用pandas库从Excel电子表格中读取数据并将数据写入新的Excel文件。它允许以编程方式处理Excel文件,从而提高数据操作和分析的效率。
#?使用pandas和matplotlib进行数据分析和可视化的Python脚本
import?pandas?as?pd
import?matplotlib.pyplot?as?plt
def?analyze_and_visualize_data(data):
??#?在此处编写数据分析和可视化的代码
??pass
脚本使用pandas和matplotlib库执行数据分析和可视化,能够探索数据集、洞察数据以及创建数据的可视化表示。
#?Python脚本,用于将多个Excel表合并为一个表
import?pandas?as?pd
def?merge_sheets(file_path,?output_file_path):
??xls?=?pd.ExcelFile(file_path)
??df?=?pd.DataFrame()
??for?sheet_name?in?xls.sheet_names:
????sheet_df?=?pd.read_excel(xls,?sheet_name)
????df?=?df.append(sheet_df)
??
??df.to_excel(output_file_path,?index=False)
脚本合并Excel文件中多个表的数据到一个表中,当数据分布在不同的表中,但想进行汇总以进行进一步分析时,会很方便。
#?Python脚本,用于连接数据库并执行查询
import?sqlite3
def?connect_to_database(database_path):
??connection?=?sqlite3.connect(database_path)
??return?connection
def?execute_query(connection,?query):
??cursor?=?connection.cursor()
??cursor.execute(query)
??result?=?cursor.fetchall()
??return?result
脚本允许连接SQLite数据库并执行查询,使用适当的Python数据库驱动程序,可以将其修改为使用其他数据库管理系统(如MySQL或PostgreSQL)。
#?Python脚本,用于在数据库上执行SQL查询
import?sqlite3
def?execute_query(connection,?query):
??cursor?=?connection.cursor()
??cursor.execute(query)??
??result?=?cursor.fetchall()
??return?result
脚本是一个通用函数,用于在数据库上执行SQL查询。可以将查询作为参数传递给该函数以及数据库连接对象,它将返回查询的结果。
import?shutil
def?backup_database(database_path,?backup_directory):
??shutil.copy(database_path,?backup_directory)?
def?restore_database(backup_path,?database_directory):
??shutil.copy(backup_path,?database_directory)??
脚本允许创建数据库的备份并在需要时进行恢复,是防止宝贵数据意外丢失的预防措施。
#?Python脚本,用于管理系统进程
import?psutil
def?get_running_processes():
??return?[p.info?for?p?in?psutil.process_iter(['pid',?'name',?'username'])]
def?kill_process_by_name(process_name):
??for?p?in?psutil.process_iter(['pid',?'name',?'username']):
????if?p.info['name']?==?process_name:
??????p.kill()
脚本使用psutil库来管理系统进程,允许检索运行进程的列表并通过名称终止指定的进程。
#?Python脚本,用于使用cron语法安排任务
from?crontab?import?CronTab
def?schedule_task(command,?schedule):
??cron?=?CronTab(user=True)
??job?=?cron.new(command=command)
??job.setall(schedule)
??cron.write()
脚本利用crontab库使用cron语法来调度任务,支持以正则间隔或特定时间自动执行特定命令。
#?Python脚本,用于监控磁盘空间并在空间不足时发送警告
import?psutil
def?check_disk_space(minimum_threshold_gb):
??disk?=?psutil.disk_usage('/')
??free_space_gb?=?disk.free?/?(2**30)?#?将字节转换为GB
??if?free_space_gb?<?minimum_threshold_gb:
????
????#?在此处编写代码以发送警告(电子邮件、通知等)
????pass
脚本监视系统上的可用磁盘空间,如果低于指定阈值则发送警告,这对于磁盘空间的积极管理和避免因磁盘空间不足导致的数据丢失非常有用。
#?Python脚本,用于检查网站状态
import?requests
def?check_website_status(url):
??response?=?requests.get(url)
??if?response.status_code?==?200:
????#?在此处编写代码以处理成功的响应
??else:
????#?在此处编写代码以处理不成功的响应
脚本通过向提供的URL发送HTTP GET请求来检查网站的状态,有助于监控网站的可用性及其响应代码。
#?Python脚本,用于自动化FTP文件传输
from?ftplib?import?FTP??
def?ftp_file_transfer(host,?username,?password,?local_file_path,?remote_file_path):
??with?FTP(host)?as?ftp:
????ftp.login(user=username,?passwd=password)
????with?open(local_file_path,?'rb')?as?f:
??????ftp.storbinary(f'STOR?{remote_file_path}',?f)
脚本使用FTP协议自动化文件传输,连接到FTP服务器,使用提供的凭据登录,并将本地文件上传到指定的远程位置。
#?Python脚本,用于自动化网络设备配置
from?netmiko?import?ConnectHandler
def?configure_network_device(host,?username,?password,?configuration_commands):
??device?=?{
????'device_type':?'cisco_ios',??
????'host':?host,
????'username':?username,
????'password':?password,
??}
??with?ConnectHandler(device)?as?net_connect:
????net_connect.send_config_set(configuration_commands)
脚本使用netmiko库自动配置网络设备,如思科路由器和交换机,可以提供一系列配置命令,脚本将在目标设备上执行它们。
#?Python脚本,用于从数据中删除重复项
import?pandas?as?pd
def?remove_duplicates(data_frame):
??cleaned_data?=?data_frame.drop_duplicates()
??return?cleaned_data
脚本使用pandas从数据集中删除重复行,这是确保数据完整性和提高数据分析的简单有效的方法。
#?数据规范化的Python脚本
import?pandas?as?pd
def?normalize_data(data_frame):
??normalized_data?=?(data_frame?-?data_frame.min())?/?(data_frame.max()?-?data_frame.min())
??return?normalized_data
脚本使用最小-最大规范化技术对数据进行规范化,将数据集中的值缩放到0到1范围内,使比较不同特征更容易。
#?Python脚本,用于处理数据中的缺失值
import?pandas?as?pd
def?handle_missing_values(data_frame):
??filled_data?=?data_frame.fillna(method='ffill')
??return?filled_data
脚本使用pandas处理数据集中的缺失值,使用向前填充方法用前一个非缺失值填充缺失值。
#?Python脚本,用于从PDF中提取文本
import?PyPDF2
def?extract_text_from_pdf(file_path):
??with?open(file_path,?'rb')?as?f:
????pdf_reader?=?PyPDF2.PdfFileReader(f)
????text?=?''
????for?page_num?in?range(pdf_reader.numPages):
??????page?=?pdf_reader.getPage(page_num)
??????text?+=?page.extractText()
??return?text
脚本使用PyPDF2库从PDF文件中提取文本,读取PDF的每一页并将提取的文本编译成一个字符串。
#?Python脚本,用于将多个PDF合并为一个PDF
import?PyPDF2
def?merge_pdfs(input_paths,?output_path):
??pdf_merger?=?PyPDF2.PdfMerger()
??for?path?in?input_paths:
????with?open(path,?'rb')?as?f:?
??????pdf_merger.append(f)
??with?open(output_path,?'wb')?as?f:
????pdf_merger.write(f)
脚本将多个PDF文件合并为一个PDF文档,这对于合并独立的PDF报告、演示文稿或其他文档到一个连贯的文件很有用。
#?Python脚本,用于为PDF添加密码保护
import?PyPDF2
def?add_password_protection(input_path,?output_path,?password):
??with?open(input_path,?'rb')?as?f:
????pdf_reader?=?PyPDF2.PdfFileReader(f)
????pdf_writer?=?PyPDF2.PdfFileWriter()
????for?page_num?in?range(pdf_reader.numPages):
??????page?=?pdf_reader.getPage(page_num)
??????pdf_writer.addPage(page)
????pdf_writer.encrypt(password)
????with?open(output_path,?'wb')?as?output_file:
??????pdf_writer.write(output_file)
脚本为PDF文件添加密码保护,使用密码加密PDF,确保只有那些知道正确密码的人才能访问内容。
综上所述。本文探索了不同领域的10个Python脚本,这些脚本可以完成自动化过程。从网页抓取和网络自动化到机器学习和物联网设备控制,Python的通用性允许高效地自动化广泛的过程。
自动化不仅可以节省时间和精力,还可以减少错误的风险,提高整体效率。通过自定义和扩展这些脚本,可以创建定制的自动化解决方案以满足特定需求。