You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:48:26