python - 如何将python命令行参数保存到日志文件?
问题描述
我有一个 python 脚本test.py
,它有几十个参数/标志:--flag1
, --flag2
, ..., --flagn
. 为了运行它,我执行如下命令
python test.py --flag1 value1 --flag3 value3 --flag8 value8
在这种情况下,我想将完全相同的输入行保存到日志文件中。在上面的例子中,我想要一个log.txt
只包含一行的:
python test.py --flag1 value1 --flag3 value3 --flag8 value8
因为这个脚本有几十个标志,其中一些默认为一些值,我只关心用户的输入是什么,我不需要任何关于用户没有直接指定的其他参数的默认值的信息.
如何创建这样的日志文件,其中包含用户键入的完全相同的行?
解决方案
您可以使用sys.argv
捕获传递给脚本的所有参数:
传递给 Python 脚本的命令行参数列表。
例如:
import sys
print(sys.argv)
print(" ".join(sys.argv))
当您将一些参数传递给此脚本时,例如:
my_script.py --foo --bar
它会打印
['my_script.py', '--foo', '--bar']
my_script.py --foo --bar
更新:当带空格的引号字符串作为参数传递时,这不会打印@PeterMoore 提到的命令行的精确副本,因为在 Python 有机会检查它们之前,您的 shell 将删除引号。一个简单的解决方法可能是:
print(" ".join(f"'{i}'" if " " in i else i for i in sys.argv))
如果你也想包含 Python 可执行文件,你可以使用sys.executable
:
>>> print(sys.executable)
/usr/bin/python
推荐阅读
- java - 当嵌入 Spring Boot 时,支持我的 SQL 的 Apache Ignite 无法以客户端模式启动 - 显示配置不匹配
- linux - 在同一行的两个位置使用 sed 或 awk 从多行中删除模式
- python - pandas:当值是可变长度的集合或列表时,从字典创建一个长/整齐的 DataFrame
- php - 在php中检测呼叫并显示来自星号的弹出窗口
- plsql - 删除父表中的记录并更新子表中的“DELETED”列
- java - 如何在java中按字母顺序对字符串列表进行排序?
- python - Python - 如何自动编辑类对象值?
- git - 无法将 Intellij 项目导出到本地 Git 目录
- node.js - npm 错误!缺少脚本:构建:通用
- macos - Pfctl 如何为内核扩展设置防火墙规则