2024-05-29 05:01:35 发布
网友
我试图传递带有空格的命令行参数,但是sys.argv[1].strip()只给出参数的第一个字
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
argument
argument with whitespace
我试着用.replace(" ","%20")方法替换空白,但这没有帮助
.replace(" ","%20")
您需要使用argv[1:]而不是argv[1]:
argv[1:]
argv[1]
docname = sys.argv[1:]
要将其打印为字符串:
' '.join(sys.argv[1:]) # Output: argument with whitespace
sys.argv[0]是脚本本身的名称,sys.argv[1:]是传递给脚本的所有参数的列表。
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基本上是一个单词列表。
sys.argv
您需要使用
argv[1:]
而不是argv[1]
:要将其打印为字符串:
sys.argv[0]
是脚本本身的名称,sys.argv[1:]
是传递给脚本的所有参数的列表。输出:
在命令行中使用字符串
可以在命令行中使用双引号字符串。就像
其他:
使用反斜杠
这里也可以使用反斜杠:
这与Python无关,与shell无关。shell有一个称为wordsplitting的特性,它使命令调用中的每个单词都成为单独的单词或arg。要将结果作为一个包含空格的单词传递给Python,必须对空格进行转义或使用引号。
换句话说,当您的参数到达Python时,分词已经完成,未转义的空白已经被消除,并且
sys.argv
基本上是一个单词列表。相关问题 更多 >
编程相关推荐