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

如何从Mac终端直接调用Python脚本中的指定函数?

如何从终端直接调用Python脚本中的指定函数

完全可以实现这种调用方式,而且确实比交互式选择更高效。核心思路是通过读取终端传入的命令行参数,匹配脚本中对应的函数并执行。下面是两种常用的实现方案:

基础方案:用sys模块处理简单参数

适合功能较少、参数简单的脚本,代码简洁直观:

import sys

# 定义你的业务函数
def sync_data():
    print("正在执行数据同步逻辑...")

def generate_report():
    print("正在生成报表...")

def main():
    # 检查参数数量是否正确
    if len(sys.argv) != 2:
        print("用法: python3 your_script.py <函数名>")
        print("可用函数: sync_data, generate_report")
        sys.exit(1)
    
    target_func = sys.argv[1]
    # 用字典建立函数名和函数的映射,比一堆if-elif更清爽
    func_mapping = {
        "sync_data": sync_data,
        "generate_report": generate_report
    }
    
    if target_func in func_mapping:
        func_mapping[target_func]()
    else:
        print(f"错误: 不存在名为 {target_func} 的函数")
        print("可用函数: sync_data, generate_report")
        sys.exit(1)

if __name__ == "__main__":
    main()

使用方式

在终端直接运行:

python3 your_script.py sync_data

就会执行sync_data函数;运行python3 your_script.py generate_report则执行报表生成逻辑。

进阶方案:用argparse处理复杂参数

如果你的函数需要接收额外参数,或者需要更友好的命令行帮助提示,推荐用Python内置的argparse模块:

import argparse

def sync_data(source, target):
    print(f"从 {source} 同步数据到 {target}...")

def generate_report(output_path, format="pdf"):
    print(f"生成{format}格式报表,保存到 {output_path}...")

def main():
    # 创建参数解析器
    parser = argparse.ArgumentParser(description="脚本功能入口")
    # 添加子命令(对应不同函数)
    subparsers = parser.add_subparsers(dest="command", required=True, help="可选的函数命令")
    
    # 为sync_data添加子命令和参数
    sync_parser = subparsers.add_parser("sync_data", help="执行数据同步")
    sync_parser.add_argument("source", help="数据源路径")
    sync_parser.add_argument("target", help="目标路径")
    
    # 为generate_report添加子命令和可选参数
    report_parser = subparsers.add_parser("generate_report", help="生成报表")
    report_parser.add_argument("output_path", help="报表保存路径")
    report_parser.add_argument("--format", choices=["pdf", "excel"], default="pdf", help="报表格式,默认pdf")
    
    # 解析命令行参数
    args = parser.parse_args()
    
    # 根据子命令调用对应函数
    if args.command == "sync_data":
        sync_data(args.source, args.target)
    elif args.command == "generate_report":
        generate_report(args.output_path, args.format)

if __name__ == "__main__":
    main()

使用方式

  • 调用带参数的函数:
python3 your_script.py sync_data ./data/source ./data/target
  • 使用可选参数:
python3 your_script.py generate_report ./reports/ --format excel
  • 查看帮助信息:
python3 your_script.py -h
# 查看特定函数的帮助
python3 your_script.py generate_report -h

内容的提问来源于stack exchange,提问作者Steven Diffey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:54:22