*Python*简单自动化脚本

目录

1、文件管理自动化

自动化文件排序

删除空文件夹

批量重命名文件

2、网页数据抓取与自动化

网页数据提取

自动提交表单

3. 文本处理与操作

统计文本单词数

查找和替换文本

4、其他自动化脚本

有声读物生成

PDF转CSV

文件加密与解密

PDF编辑器

数据清洗


⭐️引言

        Python是一种流行的编程语言,以其简单性和可读性而闻名。因其能够提供大量的库和模块,它成为了自动化各种任务的绝佳选择。通过使用Python自动化脚本,我们可以提高工作效率、降低人力成本,实现数据的批量处理、网络爬虫和自动化测试等功能。帮助你自动化日常工作中的重复任务,从而节省时间和精力。

⭐️理论

        Python主要依赖于第三方库的应用与实现,其中主要使用了os、requests、BeautifulSoup等库的使用。使用这一些库我们可以轻松实现文件管理自动化、文本处理、网页数据自动化等操作。

1、文件管理自动化

自动化文件排序:根据文件扩展名将文件分类到不同的子目录中,以组织文件结构。

import os
import shutil

def sort_files_by_extension(directory):
    for filename in os.listdir(directory):
        if os.path.isfile(os.path.join(directory, filename)):
            extension = filename.split('.')[-1]
            new_directory = os.path.join(directory, extension)
            if not os.path.exists(new_directory):
                os.makedirs(new_directory)
            shutil.move(os.path.join(directory, filename), new_directory)

sort_files_by_extension('/path/to/directory')

删除空文件夹:在指定目录中搜索并删除空文件夹,帮助维护文件夹的整洁性。

import os

def remove_empty_dirs(directory):
    for root, dirs, files in os.walk(directory, topdown=False):
        for dir_name in dirs:
            dir_path = os.path.join(root, dir_name)
            if not os.listdir(dir_path):
                os.rmdir(dir_path)

remove_empty_dirs('/path/to/directory')

批量重命名文件:允许用户根据指定的规则批量重命名目录中的文件。

import os

def batch_rename(directory, prefix):
    i = 1
    for filename in os.listdir(directory):
        if os.path.isfile(os.path.join(directory, filename)):
            new_filename = f"{prefix}_{i}{os.path.splitext(filename)[1]}"
            os.rename(os.path.join(directory, filename), os.path.join(directory, new_filename))
            i += 1

batch_rename('/path/to/directory', 'file')

2、网页数据抓取与自动化

网页数据提取:使用requests和BeautifulSoup等库从网页中提取所需的数据,如文本、图片等。

import requests
from bs4 import BeautifulSoup

url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.prettify())  # 打印解析后的HTML

批量下载图片:从网站批量下载图片,通常通过解析网站提供的图片URL列表实现。

import requests
from bs4 import BeautifulSoup
import os

url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

if not os.path.exists('images'):
    os.makedirs('images')

for img in soup.find_all('img'):
    image_url = img.get('src')
    response = requests.get(image_url)
    with open(f'images/{image_url.split("/")[-1]}', 'wb') as f:
        f.write(response.content)

自动提交表单:使用requests库自动在网站上提交表单,模拟用户操作。

import requests

url = 'https://example.com/form'
data = {'username': 'your_username', 'password': 'your_password'}
response = requests.post(url, data=data)
print(response.status_code)  # 检查响应状态码

3. 文本处理与操作

统计文本单词数:读取文本文件并统计其中的单词数量,用于文档分析或字数统计。

def count_words_in_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        text = file.read()
        words = text.split()
        return len(words)

file_path = '/path/to/text_file.txt'
word_count = count_words_in_file(file_path)
print(f"Word count: {word_count}")

查找和替换文本:在文件中查找特定文本并替换为所需文本,适用于文档编辑和批量修改。

def find_and_replace_in_file(file_path, search_text, replace_text):
    with open(file_path, 'r', encoding='utf-8') as file:
        content = file.read()
    
    updated_content = content.replace(search_text, replace_text)
    
    with open(file_path, 'w', encoding='utf-8') as file:
        file.write(updated_content)

file_path = '/path/to/text_file.txt'
search_text = 'old_text'
replace_text = 'new_text'
find_and_replace_in_file(file_path, search_text, replace_text)

4、其他自动化脚本

有声读物生成:将PDF文档中的文本转换为音频文件,便于阅读或学习。

from gtts import gTTS
import os

def generate_audio_book(text, output_path):
    tts = gTTS(text=text, lang='en')
    tts.save(output_path)

text = "This is a sample text."
output_path = '/path/to/audio.mp3'
generate_audio_book(text, output_path)

PDF转CSV:将PDF文件中的表格数据转换为CSV格式,便于数据分析和处理。

import tabula
import pandas as pd

def pdf_to_csv(pdf_path, csv_path):
    df = tabula.read_pdf(pdf_path, pages='all')
    df.to_csv(csv_path, index=False)

pdf_path = '/path/to/input.pdf'
csv_path = '/path/to/output.csv'
pdf_to_csv(pdf_path, csv_path)

文件加密与解密:使用PyAesCrypt等库对文件进行加密和解密,保护文件安全。

import tabula
import pandas as pd

def pdf_to_csv(pdf_path, csv_path):
    df = tabula.read_pdf(pdf_path, pages='all')
    df.to_csv(csv_path, index=False)

pdf_path = '/path/to/input.pdf'
csv_path = '/path/to/output.csv'
pdf_to_csv(pdf_path, csv_path)

PDF编辑器:使用Python编辑PDF文件,如解析文本。

import PyPDF2

def extract_text_from_pdf(file_path):
    # 打开PDF文件
    with open(file_path, 'rb') as file:
        pdf_reader = PyPDF2.PdfFileReader(file)
        text = ""
        # 遍历所有页面,并提取文本
        for page_num in range(pdf_reader.numPages):
            page = pdf_reader.getPage(page_num)
            text += page.extractText()
    return text

# 使用示例
file_path = 'path/to/your/file.pdf'
pdf_text = extract_text_from_pdf(file_path)
print(pdf_text)

数据清洗:多个文件数据清洗,其中包括数据类型转换、异常值处理、缺失值处理、重复值处理等。

import os
import pandas as pd
import numpy as np

def clean_data(file_path):
    # 加载数据
    data = pd.read_csv(file_path)

    # 打印原始数据信息
    print(f"原始数据信息 ({file_path}):")
    print(data.info())
    print(data.describe())

    # 处理缺失值
    data.dropna(inplace=True)
    # 或者填充缺失值
    # data.fillna(method='ffill', inplace=True)  # 使用前向填充方法
    # data.fillna(0, inplace=True)  # 使用0填充

    # 去重
    data.drop_duplicates(inplace=True)

    # 数据类型转换
    for column in data.columns:
        if data[column].dtype == 'object':
            try:
                data[column] = pd.to_numeric(data[column], errors='coerce').fillna(0).astype(int)
            except ValueError:
                pass
        elif data[column].dtype == 'datetime64[ns]':
            continue
        else:
            data[column] = pd.to_numeric(data[column], errors='coerce').fillna(0)

    # 异常值处理
    numeric_columns = data.select_dtypes(include=[np.number]).columns
    for column in numeric_columns:
        mean = data[column].mean()
        std = data[column].std()
        data = data[(data[column] > mean - 3 * std) & (data[column] < mean + 3 * std)]

    # 转换日期格式
    date_columns = data.select_dtypes(include=['datetime64[ns]']).columns
    for column in date_columns:
        data[column] = pd.to_datetime(data[column], format='%Y-%m-%d')

    return data

def process_files(directory):
    # 获取目录中的所有 CSV 文件
    csv_files = [f for f in os.listdir(directory) if f.endswith('.csv')]

    for file in csv_files:
        file_path = os.path.join(directory, file)
        cleaned_data = clean_data(file_path)

        # 保存清洗后的数据
        output_path = os.path.join(directory, f'cleaned_{file}')
        cleaned_data.to_csv(output_path, index=False)
        print(f"已将清洗后的数据保存至 {output_path}")

# 指定目录路径
directory = 'path/to/your/directory'

# 处理目录中的所有 CSV 文件
process_files(directory)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值