如何将字符串语句作为命令行参数传递

Ric*_*ith 2 python shell argparse

以下代码采用可以在 Python 端检索的单个字符串值。如何用带有空格的句子字符串来做到这一点?

from sys import argv

script, firstargument = argv

print "The script is called:", script
print "Your first variable is:", firstargument
Run Code Online (Sandbox Code Playgroud)

要运行它,我会传递这样的参数:

$ python test.py firstargument
Run Code Online (Sandbox Code Playgroud)

哪个会输出

The script is called:test.py
Your first variable is:firstargument
Run Code Online (Sandbox Code Playgroud)

一个示例输入可能是“程序运行的你好世界”,我想将其作为命令行参数传递,以存储在“第一个”变量中。

jwi*_*720 5

argv 将是 shell 解析的所有参数的列表。

所以如果我让

#script.py
from sys import argv
print argv

$python script.py hello, how are you
['script.py','hello','how','are','you]
Run Code Online (Sandbox Code Playgroud)

脚本的名称始终是列表中的第一个元素。如果我们不使用引号,每个单词也将成为列表的一个元素。

print argv[1]
print argv[2]
$python script.py hello how are you
hello
how
Run Code Online (Sandbox Code Playgroud)

但是如果我们使用引号,

$python script.py "hello, how are you"
 ['script.py','hello, how are you']
Run Code Online (Sandbox Code Playgroud)

所有单词现在是列表中的一项。所以做这样的事情

print "The script is called:", argv[0] #slicing our list for the first item
print "Your first variable is:", argv[1]
Run Code Online (Sandbox Code Playgroud)

或者,如果您出于某种原因不想使用引号:

print "The script is called:", argv[0] #slicing our list for the first item
print "Your first variable is:", " ".join(argv[1:]) #slicing the remaining part of our list and joining it as a string.

$python script.py hello, how are you
$The script is called: script.py
$Your first variable is: hello, how are you
Run Code Online (Sandbox Code Playgroud)