python - 在 Python 中传递带空格的命令行参数

标签 python linux python-2.7 python-3.x

我试图传递带有空格的命令行参数,但是 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") 方法替换空白,但这没有帮助

最佳答案

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

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

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

关于python - 在 Python 中传递带空格的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125435/

相关文章:

python - celery worker 细节

python - 使用 Nginx 作为 Sanic + Gunicorn 的反向代理时性能下降

linux - 使用 7zip 解压文件后如何重命名这些文件并保存

python - 创建一流的对象,它的所有实例属性都是只读的,就像切片一样?

python-2.7 - Spark 2.3.0读取带有标题选项的文本文件不起作用

python - 在 mysql 中禁用缓存结果(使用 python)

python - 将列值分配给 pandas 数据框中的唯一行

linux - 为什么 grep 找不到整数 * 2?

linux - Ubuntu 上的 Apache2 配置文件路径。

python - 如何使用 python 修改配置文件?