如何将 python 命令行参数保存到日志文件?
How to save python command line arguments to a log file?
我有一个python脚本test.py
,里面有几十个arguments/flags:--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
来捕获传递给脚本的所有参数:
The list of command line arguments passed to a Python script.
例如:
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提到的命令行的精确副本,因为引号将在[=32=之前被你的shell删除] 有机会可以考察一下。一个简单的解决方法可能是:
print(" ".join(f"'{i}'" if " " in i else i for i in sys.argv))
如果你也想包含 Python 可执行文件,你可以使用 sys.executable
:
>>> print(sys.executable)
/usr/bin/python
我有一个python脚本test.py
,里面有几十个arguments/flags:--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
来捕获传递给脚本的所有参数:
The list of command line arguments passed to a Python script.
例如:
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提到的命令行的精确副本,因为引号将在[=32=之前被你的shell删除] 有机会可以考察一下。一个简单的解决方法可能是:
print(" ".join(f"'{i}'" if " " in i else i for i in sys.argv))
如果你也想包含 Python 可执行文件,你可以使用 sys.executable
:
>>> print(sys.executable)
/usr/bin/python