如何在Python脚本中执行终端命令?Mac环境下定时截屏实现方案
嘿,这两个问题都是Python和系统终端交互的常见需求,我来给你详细解答~
1. 如何在Python脚本中运行终端命令?
在Python里调用终端命令,首推subprocess模块——这是官方现在更推荐的方案,比旧的os.system功能更强大、可控性更高。当然简单场景下用os.system也能快速搞定,我给你分别说明:
使用
subprocess.run()(推荐)
这个方法能让你捕获命令输出、错误信息,还能控制命令的执行方式。比如执行ls -l查看目录详情:import subprocess # 以列表形式传入命令和参数,捕获输出 result = subprocess.run(["ls", "-l"], capture_output=True, text=True) print("命令输出:", result.stdout) print("错误信息:", result.stderr) print("返回码(0表示成功):", result.returncode)如果你的命令包含管道、通配符这类shell语法,可以加上
shell=True参数,但要注意安全风险——如果命令里包含用户输入,容易引发命令注入问题:# 执行带管道的命令 subprocess.run("ls -l | grep .py", shell=True, text=True)使用
os.system()(简单场景)
这个方法语法更简洁,但没法直接获取命令的输出内容,只能拿到执行的返回码(0为成功,非0为错误):import os exit_code = os.system("ls -l") print(f"命令执行返回码:{exit_code}")
2. Mac环境下实现每分钟自动截图的Python脚本
要实现这个功能,你需要用到几个核心模块,我直接给你完整的可运行代码,再拆解关键点:
完整代码
import subprocess import time from datetime import datetime import os # 自定义截图保存目录,改成你想要的路径就行 SAVE_DIR = os.path.expanduser("~/Desktop/Automatic_Screenshots") # 如果目录不存在,自动创建 if not os.path.exists(SAVE_DIR): os.makedirs(SAVE_DIR) print(f"开始每分钟自动截图,文件将保存到:{SAVE_DIR}") print("按 Ctrl+C 可以随时停止脚本") try: while True: # 生成带时间戳的文件名,避免重复覆盖 timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") screenshot_path = os.path.join(SAVE_DIR, f"screenshot_{timestamp}.png") # 调用Mac自带的screencapture命令截图 # -x 参数:截图时不播放提示音,去掉的话会有默认的咔嚓声 subprocess.run(["screencapture", "-x", screenshot_path], check=True) print(f"已保存截图:{screenshot_path}") # 等待60秒,实现每分钟一次的间隔 time.sleep(60) except KeyboardInterrupt: print("\n脚本已停止运行") except subprocess.CalledProcessError as e: print(f"截图命令执行失败:{e}")
关键点说明
所需模块:
subprocess:用来调用Mac原生的screencapture命令,这是系统自带的截图工具,无需额外安装。time:通过time.sleep(60)控制两次截图的间隔。datetime:生成唯一的时间戳,确保每个截图的文件名不重复,不会被覆盖。os:处理文件路径,自动创建保存目录,避免因目录不存在导致的错误。
screencapture参数说明:
-x:静音截图,去掉这个参数的话,每次截图都会播放系统提示音。- 如果想要交互式截图(比如手动选择区域或窗口),可以把参数改成
-i,但这样脚本会暂停等待操作,不适合自动定时截图,所以这里用全屏截图的默认逻辑。
权限注意:
第一次运行脚本时,Mac会弹出权限请求,需要允许你的Python运行环境(比如终端、PyCharm等)访问「屏幕录制」权限,否则截图会是黑屏。你可以在「系统设置」→「隐私与安全性」→「屏幕录制」里找到对应的应用,勾选允许即可。
内容的提问来源于stack exchange,提问作者winedragon
相关产品推荐
相关产品推荐

