当前位置:首页>python>不用学Shell!Python用Plumbum一键搞定命令行,新手5分钟上手

不用学Shell!Python用Plumbum一键搞定命令行,新手5分钟上手

  • 2026-10-21 13:28:56
不用学Shell!Python用Plumbum一键搞定命令行,新手5分钟上手

还在为执行系统命令头疼?
想查文件列表要写复杂的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 传统方式(优势一眼看穿)

需求场景
传统方式(subprocess/Shell)
Plumbum方式
执行单个命令
要处理stdout/stderr,代码繁琐
像函数调用,一行搞定
组合管道命令
要写Shell字符串,容易出错
Python语法`
路径操作
用os.path,拼接麻烦
用/拼接,和文件管理器一致
跨平台
Windows/Shell命令不兼容,要写判断
自动适配,脚本一次写完到处跑

新手常见问题&避坑指南

1. Windows系统支持吗?

支持!Windows的dir、copy、ipconfig等命令都能正常调用,Plumbum自动适配系统差异~

2. 导入命令时提示“Command not found”?

•
检查命令是否存在(比如Windows没有grep,可以用findstr替代)
•
确保命令在系统环境变量中(比如自定义脚本要加到PATH里)

3. 远程连接失败?

•
检查服务器IP、用户名、密码/密钥是否正确
•
确保服务器开启SSH服务(默认22端口)
•
本地网络能访问服务器(关闭防火墙或开放22端口)

优缺点坦诚说,新手不踩坑

优点:

•
零门槛:不用懂Shell,Python语法直接调用命令,新手易上手
•
超简洁:比subprocess代码量少80%,管道、路径操作直观
•
跨平台:Windows/Linux/Mac通用,脚本不用改就能跑
•
功能全:本地命令、管道、远程SSH、文件操作都支持

缺点:

•
不支持太复杂的Shell语法(比如嵌套循环),但新手日常场景完全够用
•
远程操作需要服务器开启SSH,部分内网服务器可能受限

最后福利:新手必备资源

项目地址:https://github.com/tomerfiliba/plumbum
(里面有更多命令示例,新手可以按需查找)

Plumbum最适合新手写自动化脚本、运维工具,不用学Shell,纯Python就能搞定系统命令和远程操作,省时又省力~

最新文章

随机文章