还在为执行系统命令头疼?
想查文件列表要写复杂的subprocess代码,想组合命令(比如 grep+wc)要记Shell语法,跨平台脚本更是写了Windows跑不了Linux……
今天给新手小白安利一款「命令行神器」——Plumbum!它把系统命令变成了Python函数,不用懂Shell,纯Python语法就能执行本地命令、管道操作、远程服务器操作,跨平台还兼容,新手5分钟就能上手~
先搞懂:Plumbum 到底有多香?
简单说,它是Python和系统命令的“翻译官”,解决新手3大痛点:
不用学Shell:ls、grep、wc这些命令,直接用Python代码调用,不用记Shell语法不用写复杂代码:比subprocess简洁10倍,一行代码就能执行命令、组合管道跨平台兼容:Windows的dir、Linux的ls,Plumbum自动适配,脚本一次写完到处跑新手不用纠结原理,就把它当成“Python版命令行工具”,想执行什么系统命令,直接用它调用就行~
第一步:安装+验证(超简单,零踩坑)
1. 安装命令
打开电脑终端(Win+R输入cmd/ Linux/Mac打开Terminal),复制下面命令,按下回车就搞定(已装Python):
pip install plumbum
2. 验证是否安装成功
复制下面代码运行,能输出当前目录文件列表就说明没问题:
from plumbum import local
# 调用系统的"ls"命令(Windows会自动适配成"dir")
ls_cmd = local["ls"] # 把系统命令变成Python对象
result = ls_cmd("-l") # 像函数一样传参数(对应 ls -l)
print("当前目录文件列表:")
print(result)
运行后看到文件列表,就代表安装成功啦!
4个核心案例(新手直接抄,复制就能跑)
案例1:本地执行系统命令(比subprocess简洁10倍)
新手常见写法(用subprocess,代码繁琐):
import subprocess
# 执行 ls -l,还要处理输出编码,新手容易报错
result = subprocess.run(
["ls", "-l"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
encoding="utf-8"
)
print(result.stdout)
Plumbum优雅写法(像调用函数一样执行命令):
from plumbum import local
# 1. 调用单个命令(ls -l)
ls_cmd = local["ls"] # 获取"ls"命令对象
result = ls_cmd("-l") # 传参数,执行命令
print("ls -l 结果:")
print(result)
# 2. 执行Windows命令(比如dir)
# dir_cmd = local["dir"] # Windows专属,运行后输出目录列表
# print(dir_cmd())
✅ 新手小贴士:不管是Windows的dir、ipconfig,还是Linux的ls、ifconfig,都能用local["命令名"]调用,参数直接括号传入~
案例2:管道操作(组合多个命令,不用记Shell管道符)
想统计script.py文件中包含“def”的行数?Shell要写grep "def" script.py | wc -l,Plumbum用Python语法就能实现:
from plumbum.cmd import grep, wc # 直接导入系统命令,更简洁
# 管道操作:grep筛选包含"def"的行 → 传给wc统计行数
pipe_chain = grep["def", "script.py"] | wc["-l"] # 用 | 连接命令,和Shell逻辑一致
line_count = pipe_chain() # 执行组合命令
print(f"script.py中函数定义的行数:{line_count.strip()}")
✅ 新手小贴士:plumbum.cmd可以直接导入常用命令,不用写local["命令名"],管道符|和Shell功能一样,把前一个命令的输出传给后一个~
案例3:文件操作(路径拼接+切换目录,直观又简单)
想切换到docs目录,查找所有.txt文件?Plumbum的路径操作比os.path简洁太多:
from plumbum import local
# 1. 路径拼接(用 / 符号,和文件管理器路径逻辑一致)
docs_path = local.cwd / "docs" # 当前目录下的docs文件夹,自动适配系统路径格式
print(f"文档目录路径:{docs_path}")
# 2. 切换工作目录(with语句自动切换,结束后回到原目录)
with local.cwd("docs"): # 进入docs目录
# 执行命令:ls | grep .txt(筛选txt文件)
# & FG 表示在终端前台输出结果,新手能直接看到
(local["ls"] | local["grep"][".txt"]) & local.FG
✅ 新手小贴士:local.cwd是当前工作目录,/拼接路径比字符串拼接(比如local.cwd + "/docs")更安全,不会出错~
案例4:远程服务器操作(像操作本地一样操作SSH)
想查看远程服务器的磁盘使用情况(df -h)?不用手动登录SSH,Plumbum一键搞定:
from plumbum import SshMachine
# 1. 连接远程服务器(替换成自己的服务器信息)
# 方式1:用密码连接(不推荐,安全系数低)
# remote = SshMachine("用户名@服务器IP", password="你的密码")
# 方式2:用密钥连接(推荐,更安全)
# remote = SshMachine("用户名@服务器IP", keyfile="本地密钥文件路径")
# 2. 执行远程命令(和本地操作完全一样)
# df_cmd = remote["df"] # 获取远程服务器的df命令
# disk_usage = df_cmd("-h") # 执行 df -h
# print("远程服务器磁盘使用情况:")
# print(disk_usage)
# 3. 用完记得关闭连接
# remote.close()
print("远程SSH操作方法已掌握!替换服务器信息即可运行~")
✅ 新手小贴士:连接远程服务器时,推荐用密钥登录(避免密码泄露),Windows/Linux/Mac都支持,新手按注释替换信息就能用~
新手必知:Plumbum vs 传统方式(优势一眼看穿)
新手常见问题&避坑指南
1. Windows系统支持吗?
支持!Windows的dir、copy、ipconfig等命令都能正常调用,Plumbum自动适配系统差异~
2. 导入命令时提示“Command not found”?
检查命令是否存在(比如Windows没有grep,可以用findstr替代)确保命令在系统环境变量中(比如自定义脚本要加到PATH里)3. 远程连接失败?
优缺点坦诚说,新手不踩坑
优点:
零门槛:不用懂Shell,Python语法直接调用命令,新手易上手超简洁:比subprocess代码量少80%,管道、路径操作直观跨平台:Windows/Linux/Mac通用,脚本不用改就能跑功能全:本地命令、管道、远程SSH、文件操作都支持缺点:
不支持太复杂的Shell语法(比如嵌套循环),但新手日常场景完全够用远程操作需要服务器开启SSH,部分内网服务器可能受限最后福利:新手必备资源
项目地址:https://github.com/tomerfiliba/plumbum
(里面有更多命令示例,新手可以按需查找)
Plumbum最适合新手写自动化脚本、运维工具,不用学Shell,纯Python就能搞定系统命令和远程操作,省时又省力~