shshsh:轻松实现Python与Shell的无缝对接

shshsh:轻松实现Python与Shell的无缝对接

shshsh a bridge between python and shell 项目地址: https://gitcode.com/gh_mirrors/sh/shshsh

项目介绍

shshsh 是一个功能强大的开源项目,它为 Python 程序员提供了一种简单、灵活的方式,将 Shell 命令集成到 Python 代码中。无论是执行系统命令、处理文件还是进行文本操作,shshsh 都能让你轻松实现,而无需在 Python 和 Shell 之间进行复杂的数据转换。

项目技术分析

shshsh 基于 Python 编写,支持 Python 3.8 及以上版本。项目利用了 Python 的标准库,如 subprocess、sys 和 os,来实现与 Shell 的交互。通过特殊的语法和 API,shshsh 能够将 Python 函数与 Shell 命令无缝对接,让开发者可以在 Python 代码中直接执行 Shell 命令。

项目安装

shshsh 可以通过多种方式安装:

  • 使用 pip:pip install shshsh
  • 使用 conda:conda install shshsh -c conda-forge
  • 从源代码安装:克隆仓库后运行 pip install poetry;poetry install

项目及技术应用场景

基本用法

使用 shshsh 非常简单,你可以在任何 Python 项目中通过 I >> "[command]"Sh("[command]") 的方式执行 Shell 命令。例如,获取所有文件名中包含 "test" 的文件,可以这样做:

from shshsh import I

for filename in I >> "ls" | "grep test":
    print(filename)

参数传递与安全

shshsh 支持安全地传递参数,避免命令注入攻击。它会自动转义所有的 Bash 控制字符,确保参数的安全性:

from shshsh import I
from sys import stdout

res = (I >> "echo #{}") % "dangerous; cat /etc/passwd" | stdout
res.wait()

当前工作目录操作

shshsh 提供了一个实用的工具函数,用于操作当前工作目录:

from shshsh.utils import cwd

# 改变目录
after_change_path = cwd("../../")

# 获取当前目录
cwd()

Python 函数与数据源

shshsh 支持将 Python 函数或可迭代对象集成到命令链中,避免了复杂的文本处理操作:

from shshsh import I
from sys import stdout

def add_suffix(line: str) -> str:
    return line + ".py"

res = I >> "ls -alh" | add_suffix | "grep test" | stdout
res.wait()

错误处理与重定向

shshsh 默认将 stderr 重定向到当前 Python 进程的 stderr。但如果你需要保留错误输出,可以使用重定向表达式 >=

from shshsh import I, keep

res = I >> "ls not_exist" >= keep
res.wait()

print(res.stderr.read())

项目特点

  1. 简单易用:shshsh 提供了简洁的语法,让 Python 程序员能够快速上手。
  2. 灵活性:支持直接在 Python 代码中链式调用 Shell 命令和 Python 函数。
  3. 安全性:自动转义 Bash 控制字符,避免命令注入攻击。
  4. 丰富的功能:支持文件操作、目录管理、文本处理等多种常见 Shell 操作。

shshsh 是一款极具潜力的开源项目,无论是日常开发还是自动化脚本编写,都能极大地提高开发效率和项目质量。如果你需要一个将 Python 与 Shell 无缝对接的工具,shshsh 将是你不二的选择。

shshsh a bridge between python and shell 项目地址: https://gitcode.com/gh_mirrors/sh/shshsh

你可能感兴趣的:(shshsh:轻松实现Python与Shell的无缝对接)