python 放入必备的几个代码示例

  1. 文件批量重命名工具
import os

def batch_rename_files(folder_path, prefix):
    """
    批量重命名指定文件夹中的所有文件
    :param folder_path: 文件夹路径
    :param prefix: 新文件名前缀
    """
    if not os.path.isdir(folder_path):
        print(f"错误: {folder_path} 不是一个有效的文件夹")
        return
    
    file_list = os.listdir(folder_path)
    count = 1
    
    for file_name in file_list:
        old_path = os.path.join(folder_path, file_name)
        
        # 跳过文件夹,只处理文件
        if os.path.isdir(old_path):
            continue
            
        # 获取文件扩展名
        file_ext = os.path.splitext(file_name)[1]
        
        # 构建新文件名
        new_file_name = f"{prefix}_{count:03d}{file_ext}"
        new_path = os.path.join(folder_path, new_file_name)
        
        # 重命名文件
        os.rename(old_path, new_path)
        print(f"重命名: {file_name} -> {new_file_name}")
        
        count += 1

# 使用示例
if __name__ == "__main__":
    batch_rename_files("/path/to/your/files", "file")
  1. 简单的文本内容搜索工具
import os

def search_text_in_files(folder_path, search_text, case_sensitive=False):
    """
    在指定文件夹的所有文件中搜索文本
    :param folder_path: 文件夹路径
    :param search_text: 要搜索的文本
    :param case_sensitive: 是否区分大小写
    """
    if not os.path.isdir(folder_path):
        print(f"错误: {folder_path} 不是一个有效的文件夹")
        return
    
    # 遍历文件夹中的所有文件
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            
            # 尝试打开并读取文件
            try:
                with open(file_path, 'r', encoding='utf-8') as f:
                    content = f.read()
                    
                    # 根据是否区分大小写进行搜索
                    if case_sensitive:
                        if search_text in content:
                            print(f"在文件中找到: {file_path}")
                    else:
                        if search_text.lower() in content.lower():
                            print(f"在文件中找到: {file_path}")
                            
            except UnicodeDecodeError:
                # 跳过二进制文件
                continue
            except Exception as e:
                print(f"读取文件 {file_path} 时出错: {e}")

# 使用示例
if __name__ == "__main__":
    search_text_in_files("/path/to/your/files", "example", case_sensitive=False)
  1. 简易的HTTP服务器
import http.server
import socketserver
import argparse

def start_server(port=8000, directory='.'):
    """
    启动一个简单的HTTP服务器
    :param port: 端口号
    :param directory: 要共享的目录
    """
    Handler = http.server.SimpleHTTPRequestHandler
    Handler.directory = directory
    
    with socketserver.TCPServer(("", port), Handler) as httpd:
        print(f"服务器启动在 http://localhost:{port}")
        print(f"共享目录: {os.path.abspath(directory)}")
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            print("\n服务器已停止")

# 使用示例
if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='启动简易HTTP服务器')
    parser.add_argument('-p', '--port', type=int, default=8000, help='端口号')
    parser.add_argument('-d', '--dir', type=str, default='.', help='要共享的目录')
    args = parser.parse_args()
    
    start_server(args.port, args.dir)
import os
import shutil
import datetime

def backup_files(source, destination):
    """
    备份文件或目录到指定位置
    :param source: 源文件或目录路径
    :param destination: 备份目标路径
    """
    # 检查源是否存在
    if not os.path.exists(source):
        print(f"错误: 源 {source} 不存在")
        return
    
    # 获取当前日期时间作为备份文件名的一部分
    timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
    
    # 构建备份文件名
    source_name = os.path.basename(source)
    backup_name = f"{source_name}_backup_{timestamp}"
    backup_path = os.path.join(destination, backup_name)
    
    try:
        # 如果是目录,使用copytree
        if os.path.isdir(source):
            shutil.copytree(source, backup_path)
            print(f"目录备份成功: {backup_path}")
        # 如果是文件,使用copy2保留元数据
        else:
            shutil.copy2(source, backup_path)
            print(f"文件备份成功: {backup_path}")
            
    except Exception as e:
        print(f"备份失败: {e}")

# 使用示例
if __name__ == "__main__":
    # 要备份的文件或目录列表
    sources_to_backup = [
        "/path/to/important/file.txt",
        "/path/to/important/folder"
    ]
    
    # 备份存储位置
    backup_destination = "/path/to/backup/location"
    
    # 确保备份目录存在
    if not os.path.exists(backup_destination):
        os.makedirs(backup_destination)
    
    # 执行备份
    for source in sources_to_backup:
        backup_files(source, backup_destination)

更多推荐