python argparse 如何将整个命令作为字符串
python argparse how to get entire command as string
我有一个名为 patchWidth.py
的脚本,它使用 argparse
:
解析命令行参数
# read command line arguments -- the code is able to process multiple files
parser = argparse.ArgumentParser(description='angle simulation trajectories')
parser.add_argument('filenames', metavar='filename', type=str, nargs='+')
parser.add_argument('-vec', metavar='v', type=float, nargs=3)
假设此脚本 运行 具有以下内容:
>>> python patchWidth.py file.dat -vec 0. 0. 1.
有没有办法在 python 中将整个内容作为字符串获取?我希望能够将什么命令 运行 和什么参数打印到输出文件。
是的,您可以使用 sys 模块:
import sys
str(sys.argv) # arguments as string
注意argv[0]
是脚本名。有关详细信息,请查看 sys module documentation.
我不知道这是否是最佳选择,但是...
import sys
" ".join(sys.argv)
会不会return一个像/the/path/of/file/my_file.py arg1 arg2 arg3
这样的字符串
这将适用于其中包含 space 分隔字符串的命令。
import sys
" ".join("\""+arg+"\"" if " " in arg else arg for arg in sys.argv)
示例输出:
$ python3 /tmp/derp.py "my arg" 1 2 3
python3 /tmp/derp.py "my arg" 1 2 3
如果其中有一个带引号的字符串参数,这将不起作用,要解决这个问题,您必须像这样分隔引号:arg.replace("\"", "\\"")
。为了简洁起见,我将其省略。
我有一个名为 patchWidth.py
的脚本,它使用 argparse
:
# read command line arguments -- the code is able to process multiple files
parser = argparse.ArgumentParser(description='angle simulation trajectories')
parser.add_argument('filenames', metavar='filename', type=str, nargs='+')
parser.add_argument('-vec', metavar='v', type=float, nargs=3)
假设此脚本 运行 具有以下内容:
>>> python patchWidth.py file.dat -vec 0. 0. 1.
有没有办法在 python 中将整个内容作为字符串获取?我希望能够将什么命令 运行 和什么参数打印到输出文件。
是的,您可以使用 sys 模块:
import sys
str(sys.argv) # arguments as string
注意argv[0]
是脚本名。有关详细信息,请查看 sys module documentation.
我不知道这是否是最佳选择,但是...
import sys
" ".join(sys.argv)
会不会return一个像/the/path/of/file/my_file.py arg1 arg2 arg3
这将适用于其中包含 space 分隔字符串的命令。
import sys
" ".join("\""+arg+"\"" if " " in arg else arg for arg in sys.argv)
示例输出:
$ python3 /tmp/derp.py "my arg" 1 2 3
python3 /tmp/derp.py "my arg" 1 2 3
如果其中有一个带引号的字符串参数,这将不起作用,要解决这个问题,您必须像这样分隔引号:arg.replace("\"", "\\"")
。为了简洁起见,我将其省略。