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

Python命令行能否将函数作为参数传入?例如datetime.date.now()

问题解答:命令行传递Python日期函数表达式的可行性

直接执行py code.py -p1 a -p2 b -p3 datetime.date.now()是不行的,因为命令行传递的所有参数本质都是字符串,Python脚本接收后只会把"datetime.date.now()"当作普通文本,不会自动解析执行这个表达式。

下面是几种可行的替代方案,能满足你传入动态日期的需求:

方案1:脚本内部识别特殊标记,自动生成当前日期

在命令行传入约定的标记(比如now),脚本内部判断后调用datetime.date.now():

命令行执行:

py code.py -p1 a -p2 b -p3 now

脚本code.py示例:

import argparse
import datetime

parser = argparse.ArgumentParser()
parser.add_argument('-p1', required=True)
parser.add_argument('-p2', required=True)
parser.add_argument('-p3', required=True)
args = parser.parse_args()

# 处理日期参数
if args.p3 == "now":
    target_date = datetime.date.now()
else:
    # 兼容手动传入日期字符串的情况,比如"2024-05-20"
    try:
        target_date = datetime.datetime.strptime(args.p3, "%Y-%m-%d").date()
    except ValueError:
        raise ValueError("p3参数格式错误,需传入'now'或YYYY-MM-DD格式的日期字符串")

print(f"处理日期:{target_date}")

方案2:直接传递格式化后的日期字符串

如果需要指定特定日期(或当前日期),可以在命令行直接传递YYYY-MM-DD格式的字符串,脚本内部解析:

命令行执行(不同系统获取当前日期的方式):

# Windows cmd下
py code.py -p1 a -p2 b -p3 %date:~0,4%-%date:~5,2%-%date:~8,2%

# PowerShell下
py code.py -p1 a -p2 b -p3 $(Get-Date -Format "yyyy-MM-dd")

# Linux/macOS下
python3 code.py -p1 a -p2 b -p3 $(date +%Y-%m-%d)

脚本解析部分和方案1的else分支一致,用strptime将字符串转为date对象即可。

方案3:通过Shell预执行Python表达式传递结果

如果一定要在命令行直接写datetime.date.now(),可以让Shell先执行这个Python代码并输出结果,再把结果作为参数传递给脚本:

命令行执行(PowerShell或类Unix终端):

# PowerShell
py code.py -p1 a -p2 b -p3 $(python -c "import datetime; print(datetime.date.now())")

# Linux/macOS
python3 code.py -p1 a -p2 b -p3 $(python3 -c "import datetime; print(datetime.date.now())")

这种方式下,Shell会先运行python -c "..."得到当前日期字符串(比如2024-05-20),再将这个字符串作为-p3的参数传给你的脚本,脚本内部直接解析即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:55:34