在 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") 方法替换空白,但这没有帮助

原文由 Darshan Deshmukh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 4.2k
2 个回答

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

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

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

原文由 kojiro 发布,翻译遵循 CC BY-SA 3.0 许可协议

在命令行中使用字符串

您可以在命令行中使用双引号字符串文字。喜欢

python myscript.py "argument with whitespace"

其他:

 python myscript.py argument with whitespace

使用反斜杠

在这里你也可以使用反斜杠:

 python myscript.py argument\ with\ whitespace\

原文由 Jaidee 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题