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

如何在Python中获取脚本的精确调用命令行并写入文件?

Python 脚本记录调用命令行的等价实现

要实现和bash中echo "$0" "$@" > "${output_dir}/configuration/invocation.txt"类似的功能,Python可以借助sys.argv获取命令行参数,具体实现如下:

基础实现代码

import sys
import os

# 替换为你的实际输出目录路径
output_dir = "./output"
conf_dir = os.path.join(output_dir, "configuration")
# 自动创建不存在的目录
os.makedirs(conf_dir, exist_ok=True)
invocation_file = os.path.join(conf_dir, "invocation.txt")

# 拼接命令行并写入文件
with open(invocation_file, "w") as f:
    f.write(" ".join(sys.argv))

重要注意事项

和bash的实现一样,Python通过sys.argv拿到的参数已经经过shell的预处理,原始命令中的引号、空格等格式无法精确还原。举个例子:如果用户调用时输入python my_script.py "hello world" --flag,sys.argv会返回['my_script.py', 'hello world', '--flag'],拼接后写入的内容是my_script.py hello world --flag,丢失了原有的双引号。

这是因为shell在启动Python进程前就已经解析了命令行的引号和空格,把拆分后的参数传递给Python,原始的命令行字符串并不会被保留下来,所以无论bash还是Python,都无法完全还原用户输入的原始命令格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:22:10