我有一个名为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中将整个内容作为字符串?我希望能够打印到输出文件,使用什么参数运行什么命令。
答案 0 :(得分:4)
是的,您可以使用sys模块:
import sys
str(sys.argv) # arguments as string
请注意argv[0]
是脚本名称。有关详细信息,请查看https://issuetracker.google.com/issues/78143615。
答案 1 :(得分:3)
我不知道这是否是最好的选择,但是......
import sys
" ".join(sys.argv)
将返回类似/the/path/of/file/my_file.py arg1 arg2 arg3
答案 2 :(得分:3)
这将与其中包含以空格分隔的字符串的命令一起使用。
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("\"", "\\\"")
。为了简洁起见,我省略了它。