有哪些实用的Python和Shell脚本

发布时间:2023-04-13 14:50:33 作者:iii
来源:亿速云 阅读:218

有哪些实用的Python和Shell脚本

目录

  1. 引言
  2. Python脚本
  3. Shell脚本
  4. 总结

引言

在现代软件开发中,Python和Shell脚本是两种非常强大的工具。Python以其简洁的语法和丰富的库而闻名,适用于各种复杂的任务,如数据分析、机器学习、Web开发等。而Shell脚本则是在Unix/Linux系统中进行系统管理和自动化任务的利器。本文将详细介绍一些实用的Python和Shell脚本,帮助读者更好地理解和应用这两种工具。

Python脚本

文件处理

批量重命名文件

import os

def batch_rename_files(directory, prefix):
    for count, filename in enumerate(os.listdir(directory)):
        dst = f"{prefix}_{str(count)}.txt"
        src = os.path.join(directory, filename)
        dst = os.path.join(directory, dst)
        os.rename(src, dst)

# 使用示例
batch_rename_files("/path/to/directory", "file")

文件内容搜索与替换

import re

def search_and_replace(file_path, search_pattern, replace_pattern):
    with open(file_path, 'r') as file:
        filedata = file.read()

    filedata = re.sub(search_pattern, replace_pattern, filedata)

    with open(file_path, 'w') as file:
        file.write(filedata)

# 使用示例
search_and_replace("/path/to/file.txt", r'\bfoo\b', 'bar')

网络爬虫

简单网页抓取

import requests
from bs4 import BeautifulSoup

def fetch_webpage(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    return soup

# 使用示例
soup = fetch_webpage("https://example.com")
print(soup.title.string)

图片下载器

import os
import requests

def download_images(url, save_directory):
    if not os.path.exists(save_directory):
        os.makedirs(save_directory)

    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    for img in soup.find_all('img'):
        img_url = img['src']
        img_data = requests.get(img_url).content
        img_name = os.path.join(save_directory, os.path.basename(img_url))
        with open(img_name, 'wb') as img_file:
            img_file.write(img_data)

# 使用示例
download_images("https://example.com", "/path/to/save")

数据处理

CSV文件处理

import csv

def read_csv(file_path):
    with open(file_path, mode='r') as file:
        reader = csv.DictReader(file)
        return [row for row in reader]

def write_csv(file_path, data):
    with open(file_path, mode='w', newline='') as file:
        writer = csv.DictWriter(file, fieldnames=data[0].keys())
        writer.writeheader()
        writer.writerows(data)

# 使用示例
data = read_csv("/path/to/input.csv")
write_csv("/path/to/output.csv", data)

JSON数据处理

import json

def read_json(file_path):
    with open(file_path, 'r') as file:
        return json.load(file)

def write_json(file_path, data):
    with open(file_path, 'w') as file:
        json.dump(data, file, indent=4)

# 使用示例
data = read_json("/path/to/input.json")
write_json("/path/to/output.json", data)

自动化任务

定时任务调度

import schedule
import time

def job():
    print("I'm working...")

schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

邮件发送

import smtplib
from email.mime.text import MIMEText

def send_email(subject, body, to_email):
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = 'your_email@example.com'
    msg['To'] = to_email

    with smtplib.SMTP('smtp.example.com') as server:
        server.login('your_email@example.com', 'your_password')
        server.sendmail('your_email@example.com', [to_email], msg.as_string())

# 使用示例
send_email("Test Subject", "This is a test email.", "recipient@example.com")

系统监控

CPU和内存使用监控

import psutil

def monitor_system():
    cpu_usage = psutil.cpu_percent(interval=1)
    memory_info = psutil.virtual_memory()
    print(f"CPU Usage: {cpu_usage}%")
    print(f"Memory Usage: {memory_info.percent}%")

# 使用示例
monitor_system()

磁盘空间监控

import shutil

def monitor_disk_space():
    disk_usage = shutil.disk_usage("/")
    print(f"Total: {disk_usage.total / (2**30):.2f} GB")
    print(f"Used: {disk_usage.used / (2**30):.2f} GB")
    print(f"Free: {disk_usage.free / (2**30):.2f} GB")

# 使用示例
monitor_disk_space()

Web开发

Flask Web应用

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, World!"

if __name__ == '__main__':
    app.run(debug=True)

Django Web应用

# settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
]

# views.py
from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello, World!")

机器学习

线性回归

from sklearn.linear_model import LinearRegression
import numpy as np

# 示例数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1, 3, 2, 3, 5])

# 创建模型
model = LinearRegression()
model.fit(X, y)

# 预测
predictions = model.predict(np.array([[6]]))
print(predictions)

图像分类

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, Flatten

# 创建模型
model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)),
    MaxPooling2D(pool_size=(2, 2)),
    Flatten(),
    Dense(128, activation='relu'),
    Dense(1, activation='sigmoid')
])

# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 训练模型
# model.fit(X_train, y_train, epochs=10, batch_size=32)

Shell脚本

文件操作

批量重命名文件

#!/bin/bash

directory="/path/to/directory"
prefix="file"

count=1
for file in "$directory"/*; do
    mv "$file" "$directory/${prefix}_$count.txt"
    count=$((count + 1))
done

文件内容搜索与替换

#!/bin/bash

file_path="/path/to/file.txt"
search_pattern="foo"
replace_pattern="bar"

sed -i "s/$search_pattern/$replace_pattern/g" "$file_path"

系统管理

系统信息查看

#!/bin/bash

echo "Hostname: $(hostname)"
echo "CPU Info: $(lscpu | grep 'Model name')"
echo "Memory Info: $(free -h | grep Mem)"
echo "Disk Usage: $(df -h /)"

用户管理

#!/bin/bash

# 添加用户
adduser newuser

# 删除用户
deluser olduser

# 修改用户密码
passwd username

网络管理

网络接口配置

#!/bin/bash

# 查看网络接口
ifconfig

# 配置静态IP
ifconfig eth0 192.168.1.100 netmask 255.255.255.0

# 重启网络服务
service networking restart

网络连接测试

#!/bin/bash

ping -c 4 google.com

# 测试端口连通性
nc -zv example.com 80

自动化任务

定时任务调度

#!/bin/bash

# 添加定时任务
(crontab -l 2>/dev/null; echo "0 * * * * /path/to/script.sh") | crontab -

# 查看定时任务
crontab -l

日志轮转

#!/bin/bash

# 配置日志轮转
cat <<EOF > /etc/logrotate.d/myapp
/path/to/logfile.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}
EOF

日志分析

日志文件分析

#!/bin/bash

logfile="/var/log/syslog"

# 查找错误日志
grep "ERROR" "$logfile"

# 统计日志行数
wc -l "$logfile"

实时日志监控

#!/bin/bash

tail -f /var/log/syslog | grep "ERROR"

备份与恢复

文件备份

#!/bin/bash

backup_dir="/path/to/backup"
source_dir="/path/to/source"

# 创建备份目录
mkdir -p "$backup_dir"

# 备份文件
rsync -av "$source_dir" "$backup_dir"

数据库备份

#!/bin/bash

backup_dir="/path/to/backup"
db_name="mydatabase"

# 创建备份目录
mkdir -p "$backup_dir"

# 备份数据库
mysqldump -u root -p"$db_password" "$db_name" > "$backup_dir/$db_name.sql"

总结

Python和Shell脚本在自动化、系统管理、数据处理等方面有着广泛的应用。通过本文的介绍,读者可以了解到一些实用的脚本示例,并根据自己的需求进行修改和扩展。无论是文件处理、网络爬虫、系统监控,还是自动化任务、日志分析、备份与恢复,Python和Shell脚本都能提供强大的支持。希望本文能帮助读者更好地掌握这两种工具,并在实际工作中发挥它们的优势。

推荐阅读:
  1. 学Python需要用哪些软件
  2. Python有哪些好用的编辑器

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python shell

上一篇:可以调用Matplotlib绘图的sviewgui怎么使用

下一篇:Redis事务模式和Lua脚本的原理是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》