在Python中用空格传递命令行参数

2024-05-29 05:01:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图传递带有空格的命令行参数,但是sys.argv[1].strip()只给出参数的第一个字

import sys, os
docname = sys.argv[1].strip()

 e.g. $ python myscript.py argument with whitespace

如果我尝试调试-docname将输出为argument,而不是argument with whitespace

我试着用.replace(" ","%20")方法替换空白,但这没有帮助


Tags: 命令行pyimport参数oswithsysargument
3条回答

您需要使用argv[1:]而不是argv[1]

docname = sys.argv[1:]

要将其打印为字符串:

' '.join(sys.argv[1:])  # Output: argument with whitespace

sys.argv[0]是脚本本身的名称,sys.argv[1:]是传递给脚本的所有参数的列表。

输出:

>>> python myscript.py argument with whitespace
['argument', 'with', 'whitespace']

在命令行中使用字符串

可以在命令行中使用双引号字符串。就像

python myscript.py "argument with whitespace"

其他:

python myscript.py argument with whitespace

使用反斜杠

这里也可以使用反斜杠:

python myscript.py argument\ with\ whitespace\

这与Python无关,与shell无关。shell有一个称为wordsplitting的特性,它使命令调用中的每个单词都成为单独的单词或arg。要将结果作为一个包含空格的单词传递给Python,必须对空格进行转义或使用引号。

./myscript.py 'argument with whitespace'
./myscript.py argument\ with\ whitespace

换句话说,当您的参数到达Python时,分词已经完成,未转义的空白已经被消除,并且sys.argv基本上是一个单词列表。

相关问题 更多 >

    热门问题