python | Github 7.4k star,一个强大的 Python 库--sh!

Python专门用于执行系统命令库之sh使用详解 sh库为Python开发者提供了一个优雅而强大的系统命令执行解决方案。通过将系统命令转化为Python函数的创新设计,该库大大简化了系统编程的复杂度,使得开发者能够更加专注于业务逻辑的实现。其丰富的功能特性包括动态命令映射、灵活的参数处理、强大的输出管理和异步执行支持,能够满足从简单脚本到复杂系统工具的各种需求。对于系统管理员、DevOps工程师和需要频繁与系统交互的Python开发者而言,sh库是一个值得深入掌握的工具。不仅能够提高开发效率,还能够通过其优雅的API设计提升代码的可读性和可维护性。 阅读详情

本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。

原文链接:Github 7.4k star,一个强大的 Python 库--sh!

大家好,今天为大家分享一个强大的 Python 库 - sh。

Github地址:https://github.com/amoffat/sh

sh库是Python生态系统中一个专门用于执行系统命令的第三方库,由Andrew Moffat开发。该库的设计理念是将系统命令转化为Python函数,使得在Python程序中调用系统命令变得更加直观和优雅。sh库提供了更加简洁的API接口,大大简化了系统命令的调用过程。sh库的核心优势在于其独特的设计思路:将每个系统命令都视为一个可调用的Python函数对象。

安装

1、安装方法

sh库可以通过pip进行安装,安装过程简单直接:

# 使用pip安装
pip install sh

# 指定版本安装
pip install sh==1.14.3

2、验证安装

安装完成后,可以通过以下代码验证安装是否成功:

import sh
print(sh.__version__)
print(sh.which('python'))

如果能够正常输出版本信息和Python解释器路径,说明安装成功。

主要特性

  • 动态命令映射:自动将系统命令转换为Python函数对象,无需预先定义

  • 简洁的API设计:提供比subprocess更加直观的命令调用方式

  • 灵活的参数传递:支持位置参数、关键字参数和命令行选项的多种传递方式

  • 实时输出处理:支持命令执行过程中的实时输出捕获和处理

  • 异常处理机制:提供完善的错误处理和异常捕获功能

  • 管道操作支持:支持类似Unix管道的命令组合操作

  • 后台执行能力:支持命令的异步执行和后台运行

基本功能

1、基础命令执行

sh库最基本的功能是执行系统命令并获取输出结果。通过简单的函数调用方式,可以轻松执行各种系统命令。

import sh

# 执行简单命令
result = sh.ls('-la')
print(result)

# 获取当前目录
pwd_result = sh.pwd()
print(f"当前目录: {pwd_result.strip()}")

# 查看系统信息
uname_result = sh.uname('-a')
print(f"系统信息: {uname_result}")

2、参数传递与选项设置

sh库支持多种参数传递方式,包括位置参数、关键字参数和命令行选项。这种灵活的参数处理机制使得复杂命令的构建变得简单。

# 使用位置参数
sh.mkdir('/tmp/test_dir')

# 使用关键字参数
sh.ls(l=True, a=True, h=True)

# 混合参数使用
result = sh.find('/home', name='*.py', type='f')
print(result)

# 复杂命令构建
sh.tar('czf', 'archive.tar.gz', 'source_directory/')

3、输出处理与重定向

sh库提供了强大的输出处理功能,支持命令输出的捕获、重定向和实时处理。

# 输出重定向到文件
sh.echo('Hello World', _out='output.txt')

# 捕获输出并处理
def process_line(line):
    print(f"处理行: {line.strip()}")

# 实时处理输出
sh.ping('google.com', c=3, _out=process_line)

# 错误输出处理
try:
    result = sh.ls('/nonexistent')
except sh.ErrorReturnCode as e:
    print(f"命令执行失败: {e}")

高级功能

1、管道操作

sh库支持类似Unix管道的操作,允许将多个命令组合在一起形成复杂的处理流程。

# 管道操作示例
result = sh.ps('aux') | sh.grep('python') | sh.wc('-l')
print(f"Python进程数量: {result.strip()}")

# 复杂管道操作
log_analysis = sh.cat('/var/log/access.log') | sh.grep('404') | sh.awk('{print $1}') | sh.sort() | sh.uniq('-c')
print(log_analysis)

# 多级管道
network_info = sh.netstat('-an') | sh.grep('LISTEN') | sh.awk('{print $4}') | sh.sort() | sh.uniq()
print(network_info)

2、异步执行与后台任务

sh库支持命令的异步执行,允许在后台运行长时间的任务而不阻塞主程序。

# 后台执行命令
background_task = sh.sleep(10, _bg=True)
print("任务已在后台启动")

# 检查任务状态
if background_task.is_alive():
    print("任务正在运行中")

# 等待任务完成
background_task.wait()
print("任务已完成")

# 异步执行多个任务
tasks = []
for i in range(5):
    task = sh.ping('google.com', c=1, _bg=True)
    tasks.append(task)

# 等待所有任务完成
for task in tasks:
    task.wait()
    print(f"任务完成,退出码: {task.exit_code}")

实际应用场景

1、系统监控与运维

在系统监控和运维自动化中,sh库能够简化各种系统信息的收集和处理工作。通过将系统命令包装为Python函数,运维人员可以轻松地构建监控脚本和自动化工具。

import sh
import time

def system_monitor():
    # 获取系统负载
    load_avg = sh.uptime()
    print(f"系统负载: {load_avg.strip()}")
    
    # 检查磁盘使用情况
    disk_usage = sh.df('-h')
    print(f"磁盘使用情况:\n{disk_usage}")
    
    # 监控内存使用
    memory_info = sh.free('-m')
    print(f"内存使用情况:\n{memory_info}")
    
    # 检查关键进程
    process_count = sh.ps('aux') | sh.grep('nginx') | sh.wc('-l')
    print(f"Nginx进程数量: {process_count.strip()}")

# 定期执行监控
whileTrue:
    system_monitor()
    time.sleep(60)

2、自动化部署与CI/CD

在软件部署和持续集成流程中,sh库能够帮助开发者构建灵活的部署脚本。通过将各种部署命令封装为Python函数,可以实现更加可控和可重复的部署流程。

def deploy_application():
    try:
        # 拉取最新代码
        sh.git('pull', 'origin', 'main')
        print("代码更新完成")
        
        # 安装依赖
        sh.pip('install', '-r', 'requirements.txt')
        print("依赖安装完成")
        
        # 运行测试
        test_result = sh.python('-m', 'pytest', 'tests/')
        print("测试执行完成")
        
        # 重启服务
        sh.systemctl('restart', 'myapp')
        print("服务重启完成")
        
        # 验证部署
        health_check = sh.curl('-f', 'http://localhost:8000/health')
        print("部署验证成功")
        
    except sh.ErrorReturnCode as e:
        print(f"部署失败: {e}")
        # 回滚操作
        sh.git('reset', '--hard', 'HEAD~1')
        sh.systemctl('restart', 'myapp')
        print("已执行回滚操作")

deploy_application()

总结

sh库为Python开发者提供了一个优雅而强大的系统命令执行解决方案。通过将系统命令转化为Python函数的创新设计,该库大大简化了系统编程的复杂度,使得开发者能够更加专注于业务逻辑的实现。其丰富的功能特性包括动态命令映射、灵活的参数处理、强大的输出管理和异步执行支持,能够满足从简单脚本到复杂系统工具的各种需求。对于系统管理员、DevOps工程师和需要频繁与系统交互的Python开发者而言,sh库是一个值得深入掌握的工具。不仅能够提高开发效率,还能够通过其优雅的API设计提升代码的可读性和可维护性。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

Claude Opus 4.7与Qwen3.6-A3B:本地可编程智能体实战指南 大模型正从云端API服务演进为可嵌入工作流的本地化编程组件。Claude Opus 4.7通过design_mode实现结构化输出契约,将模型变为可验证、可审计的‘契约履行者’;Qwen3.6-35B-A3B则以自适应3-bit量化(A3B)技术突破本地部署瓶颈,在RTX 4090等消费级硬件上实现高质量、低延迟推理。二者共同推动开发者工作流重构——从调用黑盒API转向构建可控、可组合、可审计的智能体系统,支撑金融分析、医疗合规、医院可视化大屏等垂直场景快速落地。本文聚焦其原理、性能拐点与工程集成路径。 阅读详情

相关推荐

OpenSquilla:令牌高效AI代理框架,智能路由降本90%

AI智能体(AI Agent)作为连接大语言模型与现实世界任务的关键技术,正从概念验证走向工程化落地。其核心原理在于通过工具调用(Tool Calling)和环境感知,赋予模型执行复杂任务的能力。然而,在实际应用中,直接调用顶级模型处理所有请求会导致高昂的API成本,成为规模化部署的主要瓶颈。为解决这一痛点,业界提出了模型路由(Model Routing)和成本优化(Cost Optimization)等关键技术,旨在根据任务复杂度智能调度不同层级的模型,从而在保证效果的同时大幅降低开销。OpenSquil

weixin_33859231的博客 313

Python学习之sh(shell脚本)在Python中的使用

本文章向大家介绍[Python库]分析一个python库–sh(系统调用),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

分享型博主 1万+

本地 Claude CLI 工作流:基于 Homebrew 与环境变量的可靠调用方案

CLI(命令行接口)是开发者与 AI 模型交互的基础技术形态,其核心原理在于通过标准输入输出、环境变量和系统调用实现轻量级集成。相比 Electron 桌面应用或 IDE 插件,CLI 具备零依赖、可审计、易嵌入自动化流程的技术优势,尤其适合构建生产级本地 AI 编码工作流。在实际工程中,Homebrew 提供了安全可控的包分发机制,而环境变量则是传递敏感凭证(如 ANTHROPIC_API_KEY)的唯一合规通道。本文聚焦于如何从零搭建一个稳定、可复用、符合 Unix 哲学的 Claude 命令行工具链,

dichengyan0013的博客 343

在Python里,执行Shell脚本的4种方法

方法一:os模块的system()方法 方法二:os模块的popen()方法 方法三:subprocess模块的call()方法 方法四:sh库

qq_29037259的博客 8766

2026本地部署大模型实战指南:显卡选型、模型分级与生产就绪部署

大模型本地部署已从‘能否运行’迈入‘能否稳用’阶段,核心在于推理稳定性、数据主权保障与长期运维可行性。其技术原理涉及GPU显存带宽与计算密度的动态匹配、量化模型在不同硬件上的实际吞吐表现,以及vLLM等推理引擎对PCIe拓扑、内存碎片、上下文管理的深度依赖。技术价值体现在脱离公有云的合规可控、低延迟响应和私有知识闭环构建,广泛应用于法律合同审查、工业日志诊断、医疗报告生成等高敏感、强实时场景。本文聚焦RTX 4090/6000 Ada显卡实测对比、Qwen2/DeepSeek-R1系列模型的7B/14B/3

weixin_30800987的博客 507

OpenClaw本地化封装‘小龙虾’:一键部署、ROS2集成与机器人AI任务编排

机器人任务编排是指将多模态AI能力(如大语言模型、视觉识别、语音理解)按需调度并生成可执行动作指令的技术范式。其核心原理在于声明式流程定义、服务依赖自动解析与跨模块状态协同,技术价值体现在降低机器人系统集成复杂度、加速AI能力落地验证。典型应用场景包括机械臂抓取、自主导航、人机自然交互等工业与科研现场。本文聚焦中文社区广泛采用的OpenClaw轻量级运行时框架及其非官方但高度实用的本地化封装方案——‘小龙虾’,深入解析其预置国产化模型、ROS2深度集成、零代码技能配置及语音+语义泛化等关键能力,为开发者提供

cuemes08808的博客 376

sh,一个超强的 Python 库!

Python sh 库是一个用于执行 Shell 命令和操作的 Python 模块。它提供了简洁的 API,可以在 Python 中直接调用各种 Shell 命令,并获得命令执行结果。sh 库的设计目标是让 Python 开发者能够轻松地利用 Python 的强大功能来执行 Shell 脚本操作,而无需直接编写复杂的 Shell 脚本。Python sh 库为开发者提供了一个简化 Shell 脚本操作的利器,使得在 Python 中执行各种 Shell 命令和操作变得简单而直观。

涛哥聊Python 1832

Claude Code开源工作流:构建可审计、可组合的智能编码协作者

智能编码工作流是现代软件工程中应对复杂性爆炸的关键范式,其核心在于将大模型能力封装为可配置、可验证、可回溯的结构化执行单元。不同于简单API调用,它依托Agent调度机制实现多步状态管理,通过YAML定义的Commands达成语义化任务编排,并以开源设计保障权限控制与可观测性。该模式显著提升开发闭环效率,支撑PR审查、文档生成、代码重构等高频场景,尤其适用于需对接CI/CD、Jira、Slack的企业级AI编程平台建设。Claude Code正是这一理念的工程化落地代表。

cojm55771的博客 449

报错 - [uv] - Failed to install

可以正常访问网页后再试。

2501_90914666的博客 1388

MiniMax-M2+CodeX:面向高压编码场景的本地化AI编程协同方案

AI编程辅助已从‘能否生成代码’迈入‘能否在真实工程约束下持续输出高信噪比代码’的新阶段。其核心原理在于将大模型的泛化能力与开发者私有上下文深度耦合,通过AST感知建模提升语法确定性,借助本地化插件工作流实现规范对齐与测试驱动闭环。这种人机协同范式显著降低重复劳动损耗,释放工程师在架构设计与逻辑创新上的认知带宽,特别适用于算法竞赛、紧急交付、遗留系统重构等时间敏感、容错率低的硬核编码场景。MiniMax-M2与CodeX组合正是这一技术路径的典型实践。

coolmsn8786的博客 407

Seedance3.0本地部署:AI视频生成从在线服务到自主创作的完整指南

AI视频生成技术通过深度学习模型将文本描述转化为动态视觉内容,其核心原理基于扩散模型和时空注意力机制。这项技术的工程价值在于大幅降低了视频制作门槛,使个人创作者能够快速实现创意可视化。在实际应用中,本地部署方案解决了在线服务的排队等待、隐私风险和成本不可控等痛点,特别适合有批量生成需求的内容团队和对数据安全要求高的专业用户。Seedance3.0作为典型的本地化AI视频工具,通过参数级控制和离线运行能力,为创作者提供了完整的自主权。本文以显存配置和提示词工程为切入点,详细解析了从环境部署到效果优化的全流程实

weixin_33978044的博客 323

OpenClaw相关项目:Awesome系列、PicoClaw、ClawWork、ClawX、MetaClaw、OpenClawInstaller、Clawra、MicroClaw、OneClaw

OpenClaw相关项目:awesome-openclaw-skills、awesome-openclaw-usecases、PicoClaw、ClawWork、ClawX、MetaClaw、OpenClawInstaller、Clawra、MicroClaw、OneClaw

lonelymanontheway的博客 2028

Python库 | SH.py-19.61.zip

资源分类:Python库 所属语言:Python 资源全名:SH.py-19.61.zip 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

MAS(二):CrewAI、iii/Motia、JoyAgent、Langroid、AgentUniverse、LangGraph4j、Tinyflow、MiroFlow、CoAgents

MAS(二):CrewAI、iii/Motia、JoyAgent、Langroid、AgentUniverse、LangGraph4j、Tinyflow、MiroFlow、CoAgents

lonelymanontheway的博客 2199

scGPT学习资料汇总 - 单细胞多组学基础模型

scGPT(single-cell Generative Pre-trained Transformer)是一个针对单细胞多组学数据的基础模型,由多伦多大学Wang Bo实验室开发。该模型通过在超过3300万个细胞上进行生成式预训练,捕捉了基因和细胞之间的复杂关系,为多种下游任务提供了强大的基础。scGPT为单细胞分析提供了强大的基础模型和丰富的资源。通过本文汇总的学习材料,读者可以快速掌握scGPT的使用,并将其应用到自己的研究中。

2401_87189860的博客 832

详解GPU显存和batch size的关系

GPU显存、规格指标;神经网络训练,显存占用

orangerfun的博客 6210

OpenClaw相关开源项目:ZeroClaw、IronClaw、MoltWorker、clawdbot-feishu、LobsterAI、TinyClaw/TinyAGI、QQBot

OpenClaw相关开源项目:ZeroClaw、IronClaw、MoltWorker、clawdbot-feishu、LobsterAI、TinyClaw/TinyAGI、QQBot、、Openclaw-mission-control、Openclaw-Studio、OpenClaw Manager、TenacitOS、OpenClaw Dashboard、ClawDeckX、MaxClaw、ai-openclaw-skeletons

lonelymanontheway的博客 1664

Python爬虫实战:手把手教你用Selenium绕过药监局网站的反爬机制(附完整代码)

本文详细介绍了如何使用Selenium绕过药监局网站的反爬机制,提供了一套完整的Python爬虫实战方案。通过浏览器指纹伪装、动态等待策略、会话维持技巧以及分布式采集设计,帮助开发者高效爬取药监局数据,解决政府类网站常见的反爬挑战。

weixin_42620255的博客 735

openclaw不存在?Ubuntu 22.04下安全替代方案指南

在AI工具部署场景中,'openclaw'常被误认为一款支持技能扩展、GPU加速与本地化部署的开源AI Agent框架,但经全生态核查(PyPI、GitHub、Ubuntu源、npm等),该名称无任何可信项目对应,且关联高风险域名与不可信安装脚本。其背后真实需求实为:基于Ubuntu 22.04 LTS构建稳定、可审计的AI应用环境,需兼容Node.js 22、CUDA加速、Playwright浏览器自动化及中文友好界面。本文提供三条生产验证路径——Ollama+Open WebUI(开箱即用)、LangC

sunjhgq的专栏 473

【论文分享】【Agent】ProAgent: Building Proactive Cooperative Agents with Large Language Models

多智能体系统是由多个智能体组成的集合,这些智能体可以是软件程序、机器人、传感器或其他实体,它们各自具备一定的智能和自主性,并通过交互协作来实现单个智能体难以完成的复杂目标。

nanxun___的博客 1117

PX4从放弃到精通(二十七):固定翼姿态控制

固件版本 PX4 1.13.2欢迎交流学习,可加左侧名片。

超维空间科技的博客 6873

Ollama生态(一):Oterm、ChatBot-Ollama、Gollama、Hollama、RLAMA

Ollama生态(一):Oterm、ChatBot-Ollama、Gollama、Hollama、RLAMA

lonelymanontheway的博客 436

SAP Event Mesh 简介

Get Started with Messaging for Decoupled Communication Step 1: What is the SAP Event Mesh service? SAP Event Mesh 是一种完全托管的服务,用于连接应用程序、服务和系统,以便它们可以通过消息和事件相互交互。 它通过引入中央消息代理取代了传统的点对点通信。 虽然点对点通信适用于在有限数量的发送方和接收方之间共享数据,但可扩展性很快就会成为一个问题。 SAP Event Mesh 解决了这个问题,并确保

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1228

云平台汇总(二):Vercel、Modal、Replit、AWS Lightsail、Coolify、Heroku、CapRover、DigitalOcean、Railway

云平台汇总(二):Vercel、Modal、Replit、AWS Lightsail、Coolify、Heroku、CapRover、DigitalOcean、Railway

lonelymanontheway的博客 363

游戏开发中的CV:实时动作捕捉与虚拟交互

游戏开发中的CV:实时动作捕捉与虚拟交互​ ,人工智能,计算机视觉,大模型,AI,在当今游戏产业中,玩家对游戏体验的要求日益提高,追求更加真实、沉浸的交互感受。计算机视觉(Computer Vision,CV)技术的飞速发展,为游戏开发带来了革命性的突破,其中实时动作捕捉与虚拟交互技术更是成为提升游戏品质的核心驱动力。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 16万+

【ARXML专题】-2-创建一个Classic CAN(经典CAN2.0)/CANFD的系统描述ARXML文件

目录 1 创建一个AUTOSAR系统描述 2 物理层命名以及创建ECU 3 新建一个Frame 4 新建一个PDU 5 新建一个signal 6 结尾 AUTOSAR System Description Network Explorer是一个文件编辑器,支持可视化和编辑系统描述的AUTOSAR系统描述文件和ECU摘录的通信内容,它支持架构版本4.0.3、4.1.2、4.2.1、4.2.2和4.3.0。AUTOSAR系统描述(ARXML)文件是基于XML的文件格式,描述网络通信的元素...

「汽车电子助手」的博客 1万+
上一篇: AI新智力 | AI | 大模型入门(八):​蒸馏、量化、MoE、MHA
下一篇: 江大白 | Kimi K2官方技术报告出炉:384个专家,训练不靠刷题,靠模型“用自己的话再讲一遍”!
双木的木
博客等级 码龄8年 1万+粉丝 1458原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值